Heim > Backend-Entwicklung > PHP-Tutorial > Warum stimmt mein PHP-Regex nicht mit Unicode-Zeichen überein?

Warum stimmt mein PHP-Regex nicht mit Unicode-Zeichen überein?

Patricia Arquette
Freigeben: 2024-12-18 17:26:09
Original
530 Leute haben es durchsucht

Why Doesn't My PHP Regex Match Unicode Characters?

Unicode-Buchstaben-Zeichen-Übereinstimmung in PCRE/PHP

Beim Versuch, Namen in PHP zu validieren, wird ein Muster implementiert, das den folgenden regulären Ausdruck verwendet:

/^([\p{L}'\- ])+$/
Nach dem Login kopieren

Die Validierung stimmt jedoch nicht mit Unicode-Zeichen wie Ă oder überein张.

Analyse

Das Problem ergibt sich aus dem Weglassen des Modifikators „u“ im regulären Ausdruck. Dieser Modifikator ist erforderlich, um den Unicode-Zeichenabgleich zu ermöglichen und Verwechslungen mit reinen ASCII-Mustern zu vermeiden.

Durch Ändern des Musters mit dem Modifikator „u“:

/^[-\' \p{L}]+$/u
Nach dem Login kopieren

Der reguläre Ausdruck kann jetzt korrekt funktionieren Übereinstimmung mit Unicode-Buchstabenzeichen sowie Apostrophen, Bindestrichen und Leerzeichen.

Das obige ist der detaillierte Inhalt vonWarum stimmt mein PHP-Regex nicht mit Unicode-Zeichen überein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage