我想用a
替换所有出现的5
。以下代码运行良好:
$content=preg_replace("/\ba\b/","5", $content);
除非我有zapłać
之类的字样,其中a
位于非标准字符之间,或zmarła
字样,其中有一个Unicode(或非ASCII)字母后跟a
在最后的单词。有没有简单的方法来解决它?
答案 0 :(得分:3)
问题是预定义的字符类\w
是基于ASCII的,并且在使用u
修饰符时不会改变。 (参见regular-expressions.info,preg是列中的PCRE)
您可以使用lookbehind and lookahead执行此操作:
$content=preg_replace("/(?<!\p{L})a(?!\p{L})/","5",$content);
如果之前没有信件而不是前面的信件,这将取代“a”。
答案 1 :(得分:0)
$content=preg_replace("/\ba\b/u","5",$content);