2010-09-04 13 views
5

Al contar la longitud de una cadena UTF-8 en PHP utilizo mb-strlen().mb_strlen() ¿es suficiente?

Por ejemplo:

if (mb_strlen($name, 'UTF-8') < 3) { 
    $error .= 'Name is required. Minimum of 3 characters required'; 
} 

Como los campos de texto pueden aceptar cualquier idioma (en varios idiomas), que quiere asegurarse de que PHP contará mutltilanguage caracteres UTF-8 correctamente.

¿Es suficiente o necesito usar otros métodos? Me preocupa que PHP pueda equivocarse por alguna razón, o tal vez estoy siendo escéptico, pero no quiero que la gente eluda una validación importante porque PHP está equivocándose.

Respuesta

18

correcta

if (mb_strlen($name, 'UTF-8') < 3) is sufficient enough 

asegurarse de cabecera es correcta

HTTP-header (Content-Type: text/html; charset=UTF-8) 

también se puede comprobar alternativa por alguna razón

strlen(utf8_decode($string)) 

UTF-8 to Code Point Array Converter in PHP

+0

Gracias JapanPro. Mi encabezado HTTP está bien, gracias. Comprobará ese enlace. ¿Así que supongo que mb_strlen() puede ser confiable entonces como mi encabezado http es como lo dijiste arriba? Gracias! – PHPLOVER

1

Además de respuesta de JapanPro:
Su HTML puede tener:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

en lugar de una declaración implícita de cabecera:

HTTP-header (Content-Type: text/html; charset=UTF-8) 
Cuestiones relacionadas