Wortgrenze auf nicht lateinische Zeichen in PHP
-
02-10-2019 - |
Frage
Dieses Beispiel funktioniert:
echo preg_replace("/\bI\b/u", 'we', "I can"); // we can
Dieses waren russische Buchstaben verwendet werden, auch dann nicht funktioniert, obwohl ich „u“ Modifikator:
echo preg_replace("/\bЯ\b/u", 'мы', 'Я могу'); // still "Я могу"
Die Frage ist also, was soll ich das?
beheben tun
Danke.
Lösung
In PCRE (die Bibliothek von preg_replace
verwendet), \b
bezieht sich nur auf Wortgrenzen in einem ASCII-Sinne, das heißt, nur [a-zA-Z0-9_]
sind Wortzeichen.
Wenn Sie ein Я
Zeichen zu wollen, die keine Buchstaben haben, Ziffern oder _
unmittelbar vor oder nach, können Sie:
(?<![\p{L}0-9_])Я(?![\p{L}0-9_])
Sie müssen noch die u
Modifikator.
Andere Tipps
Wortgrenzen sind oft kontraintuitiv .
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow