2010-08-21 25 views
19

tôi cần phải sử dụng các biểu thức chính quy sau đây để xác nhận một số nhân vật châu Áphp - biểu thức chính quy - PCRE không hỗ trợ L, l, N, P,

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

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

preg_match() [chức năng. preg-match]: Biên dịch không thành công: PCRE không hỗ trợ \ L, \ l, \ N, \ P, \ p, \ U, \ u hoặc \ X.

Bạn có biết làm thế nào để thay đổi mô hình biểu hiện thường xuyên vì vậy mà tôi có thể xác nhận các nhân vật Châu Á từ \u2e80-\u9fff

Tôi đang sử dụng mới nhất 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 

Cảm ơn bạn

+0

Xem [regular-expressions.info/unicode](http://www.regular-expressions.info/unicode.html#category). Hỗ trợ '\ p {L}', v.v. và hoàn thành ... Xác nhận "PCRE không hỗ trợ \ L, \ l, \ N, \ P" ** gần sai **. –

Trả lời

32

PCRE không hỗ trợ cú pháp \uXXXX. Sử dụng \x{XXXX} để thay thế. Xem here.

phạm vi \u2e80-\u9fff của bạn cũng tương đương với

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

Đừng quên để thêm u modifier (/regex here/u) nếu bạn đang làm việc với UTF-8. Nếu bạn đang xử lý một mã hóa nhiều byte khác, trước tiên bạn phải convert nó thành UTF-8.

Các vấn đề liên quan