PHP替换口音

时间:2014-03-14 19:38:27

标签: php regex preg-replace

我有这段代码:

$accents = ["/[Àà]/", "/[ÈÉèé]/", "/[Ìì]/", "/[Òò]/", "/[Ùù]/"];
$replacement = ["A", "E", "I", "O", "U"];
$to_be_replaced = preg_replace($accents, $replacement, $to_be_replaced);

打算用非重音字母替换所有重音(只有意大利语中使用的重音符号)。

我试过这个:

$to_be_replaced = 'ò'; #first try
$to_be_replaced = 'èàò'; #second try

但我得到了这个输出:

  

1:AO

     

2:AEAAAO

因此,似乎每次在正确替换之前添加“A”,但我无法弄清楚原因。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

编码

尝试将u修饰符添加到正则表达式中,即"/[Àà]/u"

答案 1 :(得分:1)

您也可以使用str_replace

<?php
    $string="Àkkk";
    $from = explode (',', "À,È,É,Ì,Ò,Ù,ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u");
    $to = explode (',',"A,E,E,I,O,U,c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u");
    echo str_replace ($from, $to, $string);
?>