我想定义类似的内容:
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
答案 0 :(得分:1)
我建议不要在这里使用preg_replace
,不需要正则表达式,因为有更好的方法:
$find = array('é', 'à', 'è', 'ì', 'ò', 'ù');
$repl = array("\\'{e}", "\\`{a}", "\\`{e}", "\\`{i}", "\\`{o}", "\\`{u}");
$text = str_replace($find, $repl, $text);
但是作为您的问题,除了没有定义分隔符之外,您还错误地嵌套了preg_replace
。我可以通过preg_replace_callback
来完成您所需的工作,因为我注意到您需要 单引号 来表示某些重音字符和 急性 为其他人:
更新#1:使用preg_replace_callback
$text = preg_replace_callback(
'@é|à|è|ì|ò|ù@',
function ($match)
{
return ($match[0] == 'é') ? "\\'é" : "\\`$match[0]";
},
$text
);
答案 1 :(得分:1)
您在模式中缺少/
。
试试这个:
preg_replace('/é/','\\\'{e}',
preg_replace('/à/','\\`{a}',
preg_replace('/è/','\\`{e}',
preg_replace('/ì/','\\`{i}',
preg_replace('/ò/','\\`{o}',
preg_replace('/ù/','\\`{u}',$text))))))