この例は正常に動作します:
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
修飾子を使用する必要があります。
単語の境界は直感に反することがよくあります。