Php preg_replace,无法插入'\'';

Php preg_replace,无法插入'\'';,php,Php,我想定义如下: preg_replace('é','\\\'{e}', preg_replace('à','\\`{a}', preg_replace('è','\\`{e}', preg_replace('ì','\\`{i}', preg_replace('ò','\\`{o}', preg_replace('ù','\\`{u}',$text)))))) 我正在试着替换 è --> \'{e} à --> \`{a} and so

我想定义如下:

preg_replace('é','\\\'{e}', 
    preg_replace('à','\\`{a}',
    preg_replace('è','\\`{e}',
    preg_replace('ì','\\`{i}', 
    preg_replace('ò','\\`{o}', 
    preg_replace('ù','\\`{u}',$text))))))
我正在试着替换

è --> \'{e}
à --> \`{a} and so on
我总是很紧张

Warning: preg_replace(): No ending delimiter '�' found in /var/www/html/..../ on line 22 

我建议不要在这里使用
preg\u replace
,不需要正则表达式,因为有更好的方法:

$find = array('é', 'à', 'è', 'ì', 'ò', 'ù');
$repl = array("\\'{e}", "\\`{a}", "\\`{e}", "\\`{i}", "\\`{o}", "\\`{u}");
$text = str_replace($find, $repl, $text);
但正如您的问题所述,除了没有定义分隔符之外,您还错误地使用了嵌套的
preg\u replace
。您可以通过
preg\u replace\u callback
实现所需的功能,正如我注意到的,您希望对某些重音字符使用单引号,对其他字符使用锐引号

更新#1:使用
preg\u replace\u回调


模式中缺少
/
。 试着这样做:

preg_replace('/é/','\\\'{e}', 
preg_replace('/à/','\\`{a}', 
preg_replace('/è/','\\`{e}', 
preg_replace('/ì/','\\`{i}', 
preg_replace('/ò/','\\`{o}', 
preg_replace('/ù/','\\`{u}',$text))))))

我想你需要像这样逃避这个{u}(和{a},{e},{I},{o}),因为对于正则表达式,{}有特殊的意义。从开始。这些是与Perl兼容的正则表达式,需要像
/pattern/
#pattern#
这样的分隔符。在@MichaelBerkowski之后,您可以尝试将模式更改为
/ee/
,等等。。。
preg_replace('/é/','\\\'{e}', 
preg_replace('/à/','\\`{a}', 
preg_replace('/è/','\\`{e}', 
preg_replace('/ì/','\\`{i}', 
preg_replace('/ò/','\\`{o}', 
preg_replace('/ù/','\\`{u}',$text))))))