3

我想用 替换所有出现a5。这是运行良好的代码:

$content=preg_replace("/\ba\b/","5", $content);

除非我有诸如非标准字符之间的zapłać位置之类的单词,或者单词末尾有一个 Unicode(或非 ASCII)字母。有什么简单的方法可以解决吗?azmarłaa

4

2 回答 2

3

问题是预定义的字符类是基于 ASCII 的,并且在使用修饰符\w时不会改变。u(见regular-expressions.info,列中 preg 是 PCRE)

您可以使用lookbehind和lookahead来做到这一点:

$content=preg_replace("/(?<!\p{L})a(?!\p{L})/","5",$content);

如果前面没有字母且前面没有字母,这将替换“a”。

\p{L}:任何语言的任何类型的信件

于 2013-01-22T10:42:35.173 回答
0
$content=preg_replace("/\ba\b/u","5",$content);
于 2013-01-22T10:36:14.507 回答