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
Patricia ArquetteOriginal
2024-12-18 17:26:09527Durchsuche

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}'\- ])+$/

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

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!

Stellungnahme:
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