Heim >Backend-Entwicklung >PHP-Tutorial >Warum stimmt mein PCRE-Muster nicht mit Unicode-Buchstaben in PHP überein?

Warum stimmt mein PCRE-Muster nicht mit Unicode-Buchstaben in PHP überein?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-29 16:21:11128Durchsuche

Why Doesn't My PCRE Pattern Match Unicode Letters in PHP?

Decodierung des Unicode-Buchstaben-Matching-Rätsels in PCRE/PHP

Ein Entwickler hatte Schwierigkeiten bei der Validierung von Namen mithilfe von PCRE in PHP, insbesondere mit Nicht-ASCII Zeichen wie Ă oder 张. Ihr ursprüngliches Muster „/^([p{L}'- ]) $/“ konnte diese Zeichen nicht erfassen, was zu dem Verdacht führte, dass entweder das Muster oder die Eingabeverarbeitung der Schuldige sein könnte.

Zu Um das Problem zu klären, untersuchen wir das Muster. p{L} ist eine Abkürzung für eine Unicode-Zeicheneigenschaft für jeden Unicode-Buchstaben. Für eine ordnungsgemäße Funktion ist jedoch der UTF-8-Modus erforderlich. Standardmäßig arbeitet PHP im Nicht-Unicode-Modus, bei dem die Groß-/Kleinschreibung beachtet wird.

Wie sich herausstellte, hatte der Entwickler es versäumt, den Modifikator „u“ in seinem Muster anzugeben. Dieser Modifikator ermöglicht die Unicode-Unterstützung, sodass Zeicheneigenschaften wie p{L} wie vorgesehen funktionieren.

Um das Problem zu beheben, aktualisieren Sie das Muster:

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

Indem Sie den Modifikator „u“ hinzufügen , das Muster stimmt jetzt genau mit Unicode-Buchstabenzeichen überein, auch mit solchen aus Nicht-ASCII-Alphabeten, und gewährleistet so eine erfolgreiche Validierung von Namen mit Zeichen wie Ă und 张.

Das obige ist der detaillierte Inhalt vonWarum stimmt mein PCRE-Muster nicht mit Unicode-Buchstaben in PHP ü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