首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用preg_replace - PHP将月份翻译成西班牙语

用preg_replace - PHP将月份翻译成西班牙语
EN

Stack Overflow用户
提问于 2014-02-13 13:47:42
回答 4查看 3.6K关注 0票数 1

我想把所有的月都翻译成西班牙语,我正在用一月的时间试一试。守则如下:

代码语言:javascript
复制
  if(preg_match('/^January\s\d+$/', $month)){
    $pattern = '/^January$/';
    $replace = '/^Enero$/';
    preg_replace($pattern, $replace, $month);
  }
  return $month;

它正在回归“一月”,而不是“埃内罗”。问题在哪里?

问候

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-13 14:00:04

你从一个稍微错误的角度来处理这个问题。正则表达式不是将月份转换为不同语言的正确方法。如果要用正则表达式来完成这个任务,就必须使用几个if语句(或一个switch构造)来完成这个任务。对我来说,使用数组似乎是最好的方法。

如何获得公历月的西班牙等值

创建一个关联数组,其英文月名为键,其西班牙语等效值为值。现在,要获得西班牙月份名称,只需从定义的数组中访问相应的数组值:

代码语言:javascript
复制
$spanish_months = array(
    'January' => 'enero',
    'February' => 'febrero',
    'March' => 'marzo',
    'April' => 'abril',
    'May' => 'mayo',
    'June' => 'junio',
    'July' => 'julio',
    'August' => 'agosto',
    'September' => 'septiembre',
    'October' => 'octubre',
    'November' => 'noviembre',
    'December' => 'diciembre'
);

$month = 'January';
echo $spanish_months[$month]; // "enero"

为什么regex解决方案不起作用

只有当字符串满足格式preg_match时,TRUE语句才会计算为month_name[space]date,但只有当模式为格式month_name时,preg_replace语句才会替换--格式永远不会相同。另外,替换字符串应该是字符串,而不是regex模式。

这可能就是你要找的东西:

代码语言:javascript
复制
$pattern = '/January\s*\d{2}/'; // '^' & '$' not necessary

if(preg_match($pattern, $month)){
    $replace = 'Enero';
    echo preg_replace($pattern, $replace, $month); // "Enero"
}

我已经对匹配日期的正则表达式做了一些改进,但这仍然允许传递许多不正确的日期。如果你只是试着做实验,那就没问题了。否则,您应该使用DateTime类来验证日期和时间。

票数 1
EN

Stack Overflow用户

发布于 2014-02-13 13:50:54

最优雅的方法是使用英语月份创建数组,用西班牙语创建另一个数组,然后使用str_replace:replace

就像这样:

代码语言:javascript
复制
<?php   

$healthy = array("fruits", "vegetables", "fiber");
$yummy   = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, $yummy, $phrase);

?>
票数 2
EN

Stack Overflow用户

发布于 2014-02-13 13:56:57

不要在最后锚定:

代码语言:javascript
复制
$pattern = '/^January/';

替换不是正则表达式:

代码语言:javascript
复制
$replace = 'Enero';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21756075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档