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!