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

Come individuare i caratteri cinesi da questa stringa e stampare la parte che inizia con il primo carattere e termina con "-"? (sarebbe "caratteri 中文. Altri caratteri").Rileva il carattere cinese (multibyte) nella stringa

Grazie!

risposta

9

Ho risolto questo problema utilizzando preg_match e le espressioni regolari:

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

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

Grazie per questo ... curioso, dove è documentata la possibilità di usare \ x {unicode #}? – philfreo

+1

@philfreo: è qui: http://www.php.net/manual/en/regexp.reference.escape.php – Savageman

0

PHP lo sta archiviando come Unicode? Se è così, nel peggiore dei casi potresti passare attraverso la corda, carattere per carattere, fino a quando non colpisci quelli all'interno dell'intervallo cinese.

check this out troppo PHP: Unicode - Manual

+0

@Josh - se si seguono suggerimento di spinta, per avrebbe fatto piacere di guardare anche la risposta di VonC a questa domanda: http://stackoverflow.com/questions/1366068/whats-the-complet-range-for-chinese-characters-in-unicode –

+0

@boost, sì, php sta memorizzando la stringa in unicode. Ma come lo realizzo? Non sono molto bravo in PHP. @ JV, grazie, darò un'occhiata a questo. –

+0

se non lo si converte in modulo NCR, ha la possibilità di corrompere i caratteri durante le transazioni. – Raptor

Problemi correlati