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

Comment détecter les caractères chinois de cette chaîne et imprimer la partie commençant par le premier caractère et se terminant par "-"? (Ce serait "Caractères 中文. Encore quelques caractères -").Détecter le caractère chinois (multi-octets) dans la chaîne

Merci!

Répondre

9

Je l'ai résolu ce problème en utilisant preg_match et expressions régulières:

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

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

Merci pour cela ... curieux, où est la possibilité d'utiliser \ x {unicode #} documenté? – philfreo

+1

@philfreo: c'est ici: http://www.php.net/manual/fr/regexp.reference.escape.php – Savageman

0

Est-ce que PHP stocke cela comme Unicode? Si c'est le cas, au pire, vous pouvez parcourir la chaîne, caractère par caractère, jusqu'à ce que vous frappiez ceux qui se trouvent dans la portée chinoise.

Check this out trop PHP: Unicode - Manual

+0

@Josh - si vous suivez la suggestion de coup de pouce à pourrait aimer regarder aussi la réponse de VonC à cette question: http://stackoverflow.com/questions/1366068/whats-the-complete-range-for-chinese-characters-in-unicode –

+0

@boost, oui, php stocke la chaîne en unicode. Mais comment puis-je l'accomplir? Je ne suis pas très bon en php. @JV, merci, je vais y jeter un coup d'oeil. –

+0

Si vous ne le convertissez pas en forme NCR, il a la possibilité de corrompre les caractères pendant les transactions. – Raptor