Maison >développement back-end >tutoriel php >Pourquoi mon modèle PCRE ne correspond-il pas aux lettres Unicode en PHP ?
Décodage de l'énigme de correspondance des lettres Unicode en PCRE/PHP
Un développeur a rencontré des difficultés pour valider les noms à l'aide de PCRE en PHP, en particulier avec des fichiers non-ASCII des caractères comme Ă ou 张. Leur modèle initial, "/^([p{L}'- ]) $/", n'a pas réussi à capturer ces caractères, ce qui laisse penser que le modèle ou la gestion des entrées pourrait être le coupable.
Pour clarifions le problème, examinons le modèle. p{L} est un raccourci de propriété de caractère Unicode pour toute lettre Unicode. Cependant, il nécessite le mode UTF-8 pour fonctionner correctement. Par défaut, PHP fonctionne en mode non-Unicode, sensible à la casse.
Il s'avère que le développeur avait négligé de spécifier le modificateur "u" dans son modèle. Ce modificateur active la prise en charge d'Unicode, permettant aux propriétés de caractère telles que p{L} de fonctionner comme prévu.
Pour résoudre le problème, mettez à jour le modèle :
$namePattern = '/^[-\' \p{L}]+$/u';
En ajoutant le modificateur "u" , le modèle correspondra désormais avec précision aux caractères des lettres Unicode, y compris ceux des alphabets non-ASCII, garantissant ainsi une validation réussie des noms avec des caractères comme Ă et 张.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!