Heim >Backend-Entwicklung >PHP-Tutorial >Warum stimmt mein PHP-Regex nicht mit Unicode-Buchstaben überein?
Unicode-Buchstabenvergleich in PCRE/PHP: Überarbeitetes Verständnis
In einem Versuch, einen flexiblen Namensvalidator zu entwickeln, wurde ein PHP-Muster erstellt Entwickelt, um Unicode-Buchstaben, Apostrophen, Bindestrichen und Leerzeichen zu entsprechen:
$namePattern = "/^([\p{L}'\- ])+$/";
Dieses Muster hat jedoch Bei der Begegnung mit Nicht-ASCII-Zeichen wie Ă oder 张 sind Probleme aufgetreten. Um dies zu beheben, müssen folgende Erkenntnisse berücksichtigt werden:
1. Unicode-Modifikator: Das Hauptproblem ist das Fehlen des u-Modifikators, der für die Aktivierung der Unicode-Unterstützung in PCRE/PHP unerlässlich ist. Ohne diesen Modifikator sind die Unicode-Zeicheneigenschaften nicht verfügbar.
2. Korrigiertes Muster: Das korrigierte Muster, einschließlich des u-Modifikators, lautet wie folgt:
$namePattern = '/^[-\' \p{L}]+$/u';
Durch die Einbeziehung dieser Änderungen kann das Muster nun effektiv mit Unicode-Buchstabenzeichen übereinstimmen und so die Kompatibilität mit einer größeren Auswahl von gewährleisten Eingänge.
Das obige ist der detaillierte Inhalt vonWarum stimmt mein PHP-Regex nicht mit Unicode-Buchstaben überein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!