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))))))