PHPの非ラテン文字の単語境界
-
02-10-2019 - |
質問
この例は正常に機能します:
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
修飾子。
他のヒント
単語の境界はです 多くの場合、直感に反する.
所属していません StackOverflow