2010-08-21 19 views
19

necesito utilizar la siguiente expresión regular para validar algunos caracteres asiáticosphp - expresión regular - PCRE no soporta L, l, N, P,

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

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

preg_match() [función. preg-match]: Compilación fallida: PCRE no es compatible con \ L, \ l, \ N, \ P, \ p, \ U, \ u o \ X.

¿Usted sabe cómo cambiar el patrón de expresión regular para que pueda validar los caracteres asiáticos de \u2e80-\u9fff

estoy usando la última XAMPP

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 

Gracias

+0

Ver [regular-expressions.info/unicode](http://www.regular-expressions.info/unicode.html#category). Admite '\ p {L}', etc. y está completo ... Afirmación "PCRE no es compatible con \ L, \ l, \ N, \ P" ** es casi falso **. –

Respuesta

32

PCRE no lo hace admite la sintaxis \uXXXX. Use \x{XXXX} en su lugar. Ver here.

Su gama \u2e80-\u9fff también es equivalente a

\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}

No se olvide de añadir el modificador u (/regex here/u) si usted está tratando con UTF-8. Si está tratando con otra codificación multibyte, primero debe convert a UTF-8.