1

この例は正常に動作します:

echo preg_replace("/\bI\b/u", 'we', "I can"); // we can

「u」修飾子を使用しても、これはロシア語の文字が使用されていても機能しません。

echo preg_replace("/\bЯ\b/u", 'мы', 'Я могу'); // still "Я могу"

それで問題は、これを修正するにはどうすればよいですか?
ありがとう。

4

2 に答える 2

3

PCRE ( で使用されるライブラリpreg_replace) では\b、ASCII の意味での単語境界のみを参照します。つまり、[a-zA-Z0-9_]単語文字のみです。

文字、数字、または直前または直後Яを含まない文字に一致させたい場合は、次を使用できます。_

(?<![\p{L}0-9_])Я(?![\p{L}0-9_])

u修飾子を使用する必要があります。

于 2010-08-29T14:37:15.003 に答える
0

単語の境界は直感に反することがよくあります。

于 2010-11-18T13:53:10.067 に答える