Heim >Backend-Entwicklung >PHP-Tutorial >Warum stimmt mein PCRE-Muster nicht mit Unicode-Buchstaben in PHP überein?
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!