2016-11-24 34 views
-1

我试图在php中替换一些重音字符。首先,我使用preg_match来检测字符的这种类型(以及它正在工作),然后preg_replace将其替换为另一个字符。在我的情况下,我试图用'e'代替/[é]|[è]/如何为重音字符制作preg_replace

if(preg_match('/[é]|[è]/',$adress)){ 
     preg_replace('/[é]|[è]/','e',$adress); 
} 

所以任何替代方案或其他解决方案。

+1

你忘记了'/ u'修饰符。只需使用'$ adress = preg_replace('/ [éè]/u','e',$ adress);' –

+0

它不起作用。示例:https://3v4l.org/8FshJ – KubiRoazhon

+0

它正在工作https://3v4l.org/0rMU4 –

回答

0

在您的代码中,变量$adress通过值传递到preg_replace。该生产线

preg_replace('/[é]|[è]/','e',$adress); 

实际上$adress变量的临时副本替换的字符。但结果未被使用。

如果要修改它,你应该的preg_replace结果分配给它:

$adress = preg_replace('/[éè]/u', 'e', $adress); 

的使用注意事项u标志。此外,我已经稍微优化了原始正则表达式。

或者,使用str_replace。它不被视为“多字节”,但它实际上可以用于这种替代:

$adress = str_replace(['é', 'è'], 'e', $adress); 

P.S:考虑重命名$adress$address