Maison >développement back-end >tutoriel php >Pourquoi mon PHP Regex ne correspond-il pas aux lettres Unicode ?

Pourquoi mon PHP Regex ne correspond-il pas aux lettres Unicode ?

DDD
DDDoriginal
2024-12-18 16:43:11890parcourir

Why Doesn't My PHP Regex Match Unicode Letters?

Correspondance des caractères de lettre Unicode dans PCRE/PHP : compréhension révisée

Dans le but de développer un validateur de nom flexible, un modèle PHP a été développé pour correspondre aux caractères de lettre Unicode, aux apostrophes, aux traits d'union et aux espaces :

$namePattern = "/^([\p{L}'\- ])+$/";

Cependant, ce modèle a rencontré problèmes lorsque vous rencontrez des caractères non-ASCII tels que Ă ou 张. Pour remédier à cela, les informations suivantes doivent être prises en compte :

1. Modificateur Unicode : Le principal problème est l'absence du modificateur u, qui est essentiel pour activer le support Unicode dans PCRE/PHP. Sans ce modificateur, les propriétés des caractères Unicode deviennent indisponibles.

2. Modèle corrigé : Le modèle corrigé, y compris le modificateur u, est le suivant :

$namePattern = '/^[-\' \p{L}]+$/u';

En incorporant ces modifications, le modèle peut désormais correspondre efficacement aux caractères de lettre Unicode, garantissant ainsi la compatibilité avec une gamme plus large de entrées.

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