Question

Cet exemple fonctionne très bien:

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

Celui-ci étaient des lettres russes utilisées ne fonctionne pas, même si je l'utilise « u » modifier:

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

La question est donc que dois-je faire pour résoudre ce problème?
Merci.

Était-ce utile?

La solution

Dans PCRE (la bibliothèque utilisée par preg_replace), \b se réfère uniquement à des limites de mots dans un sens ASCII, à savoir que [a-zA-Z0-9_] sont des caractères de mot.

Si vous voulez faire correspondre un caractère Я qui n'a pas des lettres, des chiffres ou _ immédiatement avant ou après, vous pouvez utiliser:

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

Il vous reste à utiliser le modificateur de u.

Autres conseils

limites

Word sont souvent contre-intuitif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top