2009-10-11 16 views
8
$str = "This is a string containing 中文 characters. Some more characters - 中华人民共和国 "; 

Làm cách nào để phát hiện ký tự Trung Quốc từ chuỗi này và in phần bắt đầu bằng ký tự đầu tiên và kết thúc bằng "-"? (nó sẽ là "ký tự 中文. Một số ký tự khác -").Phát hiện ký tự Trung Quốc (multibyte) trong chuỗi

Cảm ơn bạn!

Trả lời

9

Tôi đã giải quyết vấn đề này bằng preg_match và biểu thức thông thường:

$str = "This is a string containing 中文 characters. Some more characters - 中华人民共和国 "; 

preg_match(/[\x{4e00}-\x{9fa5}]+.*\-/u, $str, $matches); 
+0

Cảm ơn vì điều này ... tò mò, đâu là khả năng sử dụng \ x {unicode #} được ghi lại? – philfreo

+1

@philfreo: nó ở đây: http://www.php.net/manual/en/regexp.reference.escape.php – Savageman

0

PHP có lưu trữ mã này dưới dạng Unicode không? Nếu vậy, tệ nhất bạn có thể bước qua chuỗi ký tự, nhân vật theo từng ký tự, cho đến khi bạn đạt được những người trong phạm vi Trung Quốc.

Kiểm tra này ra quá PHP: Unicode - Manual

+0

@Josh - nếu bạn làm theo đề nghị tăng, để có thể thích cũng nhìn vào câu trả lời VonC để câu hỏi này: http://stackoverflow.com/questions/1366068/whats-the-complete-range-for-chinese-characters-in-unicode –

+0

@boost, vâng, php đang lưu chuỗi trong unicode. Nhưng làm cách nào để hoàn thành nó? Tôi không giỏi php. @JV, cảm ơn, tôi sẽ xem xét nó. –

+0

nếu bạn không chuyển đổi nó sang dạng NCR, nó có khả năng làm hỏng các ký tự trong các giao dịch. – Raptor