【问题标题】:Issue replacing content with str_replace用 str_replace 替换内容的问题
【发布时间】:2011-08-24 21:52:51
【问题描述】:

我正在使用 CMS 西班牙语网站,我正在尝试将月份替换为西班牙语。

这是日期函数的样子 date("F j, Y, g:i a"):

August 24, 2011, 1:47 pm

现在我希望它看起来像这样:

Agosto 24, 2011, 1:47 pm

使用Php Documentation 中的一个例子我做了这个:

$p['time'] = date("F j, Y, g:i a");
        $time_english = $p['time'];
        $search  = $time_english('August', 'September', 'October', 'November', 'December');
        $replace = $times_spanish('Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
        $subject ='August';
        str_replace($search, $replace, $subject);

出现如下错误:

Fatal error: Call to undefined function August 24, 2011, 3:50 pm() in
    $search  = $time_english('August', 'September', 'October', 'November', 'December');

【问题讨论】:

  • 你将 $time_english 和 $time_spanish 作为函数调用,它应该是 array()。

标签: php str-replace


【解决方案1】:

使用strftime() 会容易得多。您所要做的就是设置一个locale,然后您就可以用您想要的语言输出。

例子:

setlocale(LC_ALL, 'es_ES');    // I think it´s es_ES
$my_time = strftime("%B %e, %G, %I:%M %P");    // something like that...

【讨论】:

  • 你能举个具体的例子吗?
  • @Gabriel 我已经添加了一个示例。
  • 我正在放置 setlocale(LC_TIME, "es_ES");在日期功能之前,它不工作
  • @Gabriel 我认为这取决于服务器上安装的语言环境,可能类似于:setlocale (LC_TIME, "es_ES.ISO8859-1");
  • @Gabriel 在 linux 中,您可以从命令行检查安装了哪些语言环境:$ locale -a
【解决方案2】:

这可能是正确的一个

$p['time'] = date("F j, Y, g:i a");

$search  = array('August', 'September', 'October', 'November', 'December');
$replace = array('Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
str_replace($search, $replace, $subject);

【讨论】:

  • 谢谢,但我需要将它保存到变量 time 中,我该如何实现呢? ` $p['time'] = date("F j, Y, g:i a"); $time = $p['time']; $search = array('八月', '九月', '十月', '十一月', '十二月'); $subject ='八月'; $replace = array('Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'); str_replace($search, $replace, $subject);`
  • 在str_replace前添加$time =
  • 它只返回'Agosto',缺少日期和时间:(
【解决方案3】:

我想你是说

    $search  = array('August', 'September', 'October', 'November', 'December');
    $replace = array('Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');

而不是

    $search  = $time_english('August', 'September', 'October', 'November', 'December');
    $replace = $times_spanish('Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');

作为一个兴趣点,您的错误表明它试图调用名为August 24, 2011, 3:50 pm() 的函数是因为明显的变量函数名称$time_english()。它返回 $time_english 的值,然后尝试将其作为函数运行。


这就是全部内容:

$p['time'] = date("F j, Y, g:i a");
$time_english = $p['time'];
$search  = array('August', 'September', 'October', 'November', 'December');
$replace = array('Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
$time_spanish = str_replace($search, $replace, $time_english);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2019-04-04
    • 2012-12-10
    相关资源
    最近更新 更多