2011-02-07 39 views
20

Tôi có chuỗi $str và tôi muốn kiểm tra xem nội dung nó `s có ký tự Trung Quốc hay không (đúng/sai)Php kiểm tra nếu chuỗi có ký tự Trung Quốc

$str = "赕就可消垻,只有当所有方块都被消垻时才可以过关"; 

bạn có thể vui lòng giúp tôi?

Cảm ơn! Adrian

+1

Bộ ký tự này là gì? UTF-8 hoặc một trong những địa phương? –

+0

@Pekka charset = utf-8 – Adrian

+0

có thể trùng lặp của [Phát hiện ký tự trung gian (multibyte) trong chuỗi] (http://stackoverflow.com/questions/1550950/detect-chinese-multibyte-character-in-the-string) –

Trả lời

45

Bạn có thể sử dụng một lớp ký tự unicode http://www.regular-expressions.info/unicode.html

preg_match("/\p{Han}+/u", $utf8_str); 

này chỉ kiểm tra sự hiện diện của ít nhất một ký tự Trung Quốc. Bạn có thể muốn mở rộng này nếu bạn muốn phù hợp với chuỗi hoàn chỉnh.

+0

Câu trả lời hay. Không biết bạn có thể xác định unicode thông qua regex! – Peter

+0

@Peter: Đó là một chút gần đây. Phụ thuộc vào phiên bản, nhưng phải có gói 'PCRE_VERSION' tương thích Unicode kể từ PHP4. – mario

+0

IIRC, điều này cũng phụ thuộc vào thư viện PCRE trên máy chủ đã bật xử lý Unicode. Nhưng nó sẽ có mặt trên hầu hết các máy chủ hiện đại. –

1

này link cho một câu hỏi trước đó vào việc xác định đơn giản hóa hoặc cổ truyền Trung Quốc có thể cung cấp cho bạn một số ý tưởng ... bạn không thực sự xác định những bạn có ý nghĩa, và tôi không biết tiếng Trung Quốc cũng đủ để nhận ra sự khác biệt

+0

Hey, đây là một ý tưởng tuyệt vời và có ít phụ thuộc hơn so với một Unicode Regex. +1 –

+0

@Pekka - Tôi phải thú nhận, tôi đã rất ngạc nhiên khi nó thực sự hoạt động (ngay cả khi nó cần một chút trợ giúp từ bobince với bộ ký tự thực tế) .... chỉ là một trong những lý thuyết mà tôi chưa bao giờ có cơ hội để thử trong thực tế. –

2

@mario câu trả lời là đúng!

Đối với ký tự Trung Quốc sử dụng regex này: /[\x{4e00}-\x{9fa5}]+/u

Và Đừng quên bổ u !!!

Về u modifier reference

TKS để Mario

0

Regex cho phép nhân vật duy nhất của Trung Quốc với tối đa 10 và tối thiểu 2 nhân vật Trung Quốc

/^\p{Han}{2,10}+$/u 

Sử dụng regex này cho phép nhân vật Trung Quốc mà thôi.

  1. Nó cho phép nhân vật Trung Quốc chỉ &
  2. Nó cho phép tối thiểu 2 nhân vật &
  3. Nó cho phép tối đa 10 nhân vật

Bạn có thể thay đổi nhân vật tối thiểu và tối đa bằng cách thay đổi {2,10} như theo nhu cầu của bạn.

\ p & /u là rất quan trọng để thêm xin đừng tránh để thêm vào.

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