limite de mot sur les caractères non latins en php
-
02-10-2019 - |
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.
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