这个例子工作正常:
echo preg_replace("/\bI\b/u", 'we', "I can"); // we can
即使我使用“u”修饰符,这个使用的俄语字母也不起作用:
echo preg_replace("/\bЯ\b/u", 'мы', 'Я могу'); // still "Я могу"
所以问题是我应该怎么做才能解决这个问题?
谢谢。
这个例子工作正常:
echo preg_replace("/\bI\b/u", 'we', "I can"); // we can
即使我使用“u”修饰符,这个使用的俄语字母也不起作用:
echo preg_replace("/\bЯ\b/u", 'мы', 'Я могу'); // still "Я могу"
所以问题是我应该怎么做才能解决这个问题?
谢谢。
在 PCRE(由 使用的库preg_replace
)中,\b
仅指 ASCII 意义上的单词边界,即仅[a-zA-Z0-9_]
是单词字符。
如果要匹配Я
没有字母、数字或_
紧接其前后的字符,可以使用:
(?<![\p{L}0-9_])Я(?![\p{L}0-9_])
您仍然必须使用u
修饰符。
单词边界通常是违反直觉的。