Maison >développement back-end >tutoriel php >Pourquoi mon modèle PCRE ne correspond-il pas aux lettres Unicode en PHP ?

Pourquoi mon modèle PCRE ne correspond-il pas aux lettres Unicode en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-29 16:21:11137parcourir

Why Doesn't My PCRE Pattern Match Unicode Letters in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn