2011-02-07 11 views
20

tengo la cadena $str y quiero comprobar si `s de contenido tiene caracteres chinos o no (verdadero/falso)PHP cheque si la cadena tiene caracteres chinos

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

¿Me podría ayudar?

Gracias! Adrian

+1

¿En qué juego de caracteres está esto? UTF-8 o uno de los locales? –

+0

@Pekka charset = utf-8 – Adrian

+0

posible duplicado de [Detectar caracteres chinos (multibyte) en la cadena] (http://stackoverflow.com/questions/1550950/detect-chinese-multibyte-character-in-the-string) –

Respuesta

45

Usted podría utilizar una clase de caracteres Unicode http://www.regular-expressions.info/unicode.html

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

Esto se comprueba la presencia de al menos un carácter chino. Es posible que desee ampliar esto si desea hacer coincidir la cadena completa.

+0

Gran respuesta. ¡No sabía que se podía identificar Unicode a través de Regex! – Peter

+0

@Peter: es un poco reciente. Depende de la versión, pero un 'PCRE_VERSION' compatible con Unicode debe incluirse desde PHP4. – mario

+0

IIRC, esto también depende de la biblioteca PCRE en el servidor que tiene activado el manejo Unicode. Pero debería estar presente en la mayoría de los servidores modernos. –

1

Este link a una pregunta anterior en la identificación chino simplificado o tradicional que podría darle algunas ideas ... que en realidad no especifica qué quiere decir, y yo no sabe chino lo suficientemente bien como para reconocer la diferencia

+0

Oye, esta es una gran idea y tiene menos dependencias que Unicode Regex. +1 –

+0

@Pekka - Tengo que confesar, me sorprendió que realmente funcionara (incluso si necesitaba un poco de ayuda de Bobince con los conjuntos de caracteres reales) .... solo una de esas teorías que nunca tuve. oportunidad de probar en la práctica. –

2

@mario ¡la respuesta es correcta!

Para caracteres chinos utilizan esta expresión regular: /[\x{4e00}-\x{9fa5}]+/u

y no se olvide el modificador u !!!

Sobre u modificador reference

TKS a Mario

0

expresión regular para permitir que el carácter único chino con un máximo de 10 y un mínimo de 2 caracteres chinos

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

Utilice esta expresión regular que sólo permite caracteres chinos.

  1. Permite carácter chino solamente &
  2. Permite mínimo 2 caracteres &
  3. Permite un máximo de 10 caracteres

Puede cambiar el carácter mínimo y máximo cambiando {2,10} como por su necesidad.

\ p & /u son muy importantes para agregar por favor no evitar para añadirlo.

Cuestiones relacionadas