我想用 替换所有出现a的5。这是运行良好的代码:
$content=preg_replace("/\ba\b/","5", $content);
除非我有诸如非标准字符之间的zapłać位置之类的单词,或者单词末尾有一个 Unicode(或非 ASCII)字母。有什么简单的方法可以解决吗?azmarłaa
问题是预定义的字符类是基于 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);