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.

War es hilfreich?

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
scroll top