我想用 替换所有出现a
的5
。这是运行良好的代码:
$content=preg_replace("/\ba\b/","5", $content);
除非我有诸如非标准字符之间的zapłać
位置之类的单词,或者单词末尾有一个 Unicode(或非 ASCII)字母。有什么简单的方法可以解决吗?a
zmarła
a
问题是预定义的字符类是基于 ASCII 的,并且在使用修饰符\w
时不会改变。u
(见regular-expressions.info,列中 preg 是 PCRE)
您可以使用lookbehind和lookahead来做到这一点:
$content=preg_replace("/(?<!\p{L})a(?!\p{L})/","5",$content);
如果前面没有字母且前面没有字母,这将替换“a”。
\p{L}
:任何语言的任何类型的信件。
$content=preg_replace("/\ba\b/u","5",$content);