2010-08-21 15 views
19

Ich muss verwenden Sie den folgenden regulären Ausdruck zu validieren einige asiatische Schriftzeichenphp - regulärer Ausdruck - PCRE nicht L, l, N P,

$regexp = "/^[\-'\u2e80-\u9fff\sa-zA-Z.]+$/"; // with warning 

$regexp = "/^[\-'\sa-zA-Z.]+$/"; // without warning 

preg_match() [Funktion unterstützen. preg-match]: Kompilierung fehlgeschlagen: PCRE unterstützt \ L, \ l, \ N, \ P, \ p, \ U, \ u oder \ X nicht.

Wissen Sie, wie das Muster eines regulären Ausdrucks ändern, so dass ich die asiatischen Zeichen von \u2e80-\u9fff

validieren kann ich die neueste XAMPP bin mit

Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 

Danke

+0

Siehe [regulär-expressions.info/unicode] (http://www.regular-expressions.info/unicode.html#category). Unterstützt '\ p {L}' usw. und ist abgeschlossen ... Behauptung "PCRE unterstützt nicht \ L, \ l, \ N, \ P" ** ist fast falsch **. –

Antwort

32

PCRE nicht der Fall ist Unterstützung der \uXXXX Syntax. Verwenden Sie stattdessen \x{XXXX}. Siehe here.

Ihr \u2e80-\u9fff Bereich ist auch

Äquivalent

\p{InCJK_Radicals_Supplement}\p{InKangxi_Radicals}\p{InIdeographic_Description_Characters}\p{InCJK_Symbols_and_Punctuation}\p{InHiragana}\p{InKatakana}\p{InBopomofo}\p{InHangul_Compatibility_Jamo}\p{InKanbun}\p{InBopomofo_Extended}\p{InKatakana_Phonetic_Extensions}\p{InEnclosed_CJK_Letters_and_Months}\p{InCJK_Compatibility}\p{InCJK_Unified_Ideographs_Extension_A}\p{InYijing_Hexagram_Symbols}\p{InCJK_Unified_Ideographs}

Vergessen Sie nicht, den u Modifikator (/regex here/u) hinzufügen, wenn Sie mit UTF-8 zu tun hat. Wenn Sie mit einer anderen Multi-Byte-Codierung arbeiten, müssen Sie zuerst convert es zu UTF-8.