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

¿Cómo puedo detectar los caracteres chinos de esta cadena e imprimir la parte que comienza con el primer carácter y finaliza con "-"? (Sería "caracteres 中文. Algunos caracteres más -").Detectar caracteres chinos (multibyte) en la cadena

¡Gracias!

Respuesta

9

He resuelto este problema utilizando preg_match y expresiones regulares:

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

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

Gracias por esto ... curioso, ¿dónde está documentada la posibilidad de usar \ x {unicode #}? – philfreo

+1

@philfreo: está aquí: http://www.php.net/manual/en/regexp.reference.escape.php – Savageman

0

¿PHP está almacenando esto como Unicode? Si es así, en el peor de los casos podría pasar por la cadena, carácter por personaje, hasta que llegue a los que están dentro del rango chino.

mira esto también PHP: Unicode - Manual

+0

@ Josh - si usted sigue la sugerencia de impulso, que les gustaría mirar también a la respuesta de VonC a esta pregunta: http://stackoverflow.com/questions/1366068/whats-the-complete-range-for-chinese-characters-in-unicode –

+0

@boost, sí, php está almacenando la cadena en Unicode. ¿Pero cómo lo logro? No soy muy bueno en php. @JV, gracias, lo echaré un vistazo. –

+0

si no lo convierte a formato NCR, tiene la posibilidad de dañar los caracteres durante las transacciones. – Raptor

Cuestiones relacionadas