更改字符串PHP中的单词,但我不知道这个单词

时间:2015-08-02 19:16:43

标签: php string replace

我有一个字符串,我必须用另一个单词替换月份(我必须将月份翻译成意大利语)。问题是我不知道字符串 $ intervallo

中的月份是多少

我尝试使用此代码但不起作用...请您给我一些建议吗?

谢谢!

$intervallo= " 22 July-28 July 2015";

$settimana= "Attivita' settimana".str_replace("January","Gennaio",$intervallo);
$settimana= "Attivita' settimana".str_replace("February","Febbraio",$intervallo);
$settimana= "Attivita' settimana".str_replace("March","Marzo",$intervallo);
$settimana= "Attivita' settimana".str_replace("April","Aprile",$intervallo);
$settimana= "Attivita' settimana".str_replace("May","Maggio",$intervallo);
$settimana= "Attivita' settimana".str_replace("June","Giugno",$intervallo);
$settimana= "Attivita' settimana".str_replace("July","Luglio",$intervallo);
$settimana= "Attivita' settimana".str_replace("August","Agosto",$intervallo);
$settimana= "Attivita' settimana".str_replace("September","Settembre",$intervallo);
$settimana= "Attivita' settimana".str_replace("October","Ottobre",$intervallo);
$settimana= "Attivita' settimana".str_replace("November","Novembre",$intervallo);
$settimana= "Attivita' settimana".str_replace("December","Dicembre",$intervallo);

4 个答案:

答案 0 :(得分:6)

@mmm的回答是正确的,但是有一种更简单的方法可以减少错误:

$intervallo = " 22 July-28 July 2015";
$search = Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
$replace = Array('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre');

$settimana= "Attivita' settimana".str_replace($search, $replace, $intervallo);

答案 1 :(得分:2)

所有的重新命名都在同一个变量上,所以你必须这样做:

$intervallo = str_replace("January","Gennaio",$intervallo);
$intervallo = str_replace("February","Febbraio",$intervallo);
$intervallo = str_replace("March","Marzo",$intervallo);
$intervallo = str_replace("April","Aprile",$intervallo);
$intervallo = str_replace("May","Maggio",$intervallo);
$intervallo = str_replace("June","Giugno",$intervallo);
$intervallo = str_replace("July","Luglio",$intervallo);
$intervallo = str_replace("August","Agosto",$intervallo);
$intervallo = str_replace("September","Settembre",$intervallo);
$intervallo = str_replace("October","Ottobre",$intervallo);
$intervallo = str_replace("November","Novembre",$intervallo);
$intervallo = str_replace("December","Dicembre",$intervallo);

$settimana = "Attivita' settimana" . $intervallo;

答案 2 :(得分:1)

您的代码仅适用于12月,因为每行都会覆盖从上一行发生的任何替换。我发现您使用str_replace()数组处理的表单替换效果很好:

$intervallo= " 22 July-28 July 2015";

$settimana = str_replace(
    array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ),
    array( 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre' ),
    $intervallo
);

这可以通过将第一个数组中的每个值替换为第二个数组中的相应值来实现。

答案 3 :(得分:0)

为了尽量减少重复,你应该重复几个月。

$months = array(
    array(
        'english' => 'January',
        'italian' => 'Gennaio'
    ),
    array(
        'english' => 'February',
        'italian' => 'Febbraio'
    ),
    array(
        'english' => 'March',
        'italian' => 'Marzo'
    ),
    ...
);

$intervallo = " 22 July-28 July 2015";

foreach ($months as $month) {
    $intervallo = str_replace($month['english'], $month['italian'], $intervallo);
}

$settimana = "Attivita' settimana" . $intervallo;

这个解决方案还意味着如果在某个时刻混入另一种语言,那么重构代码就会简单得多。