此示例正常工作:

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 修饰符。

其他提示

单词边界是 通常是违反直觉的.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top