> Faqs > ¿Por qué PHP devuelve mal el número de caracteres de cadenas con ñ o tildes? ¿Cómo solucionarlo?

¿Por qué PHP devuelve mal el número de caracteres de cadenas con ñ o tildes? ¿Cómo solucionarlo?

Durante un rato me he sorprendido porque PHP me estaba dando mal el número de caracteres de una cadena con strlen(). Luego me he dado cuenta que tenía la letra "ñ".

echo strlen('uña') // muestra 4

Siguiendo haciendo mis pruebas, veo que también ocurre cuando las letras tienen tilde, cualquier letra acentuada o por ejemplo la "ç".

echo strlen('á') // muestra 2

¿Por qué ocurre esto? ¿Cómo puedo mostrar el número de caracteres correcto?

Respuestas

Si, la verdad que es un tratamiento poco intuitivo que hace PHP de las cadenas.

La letra "ñ", "ç" y todos los caracteres que tengan cualquier acentuación (tildes de cualquier tipo), si los tratas con funciones de cadena normales te dan problemas. Tienes que usar las Funciones de cadenas de caracteres multibyte.

Si estás tratando con cadenas con tildes sería bueno que usases las mismas funciones de cadena de PHP, pero con el prefijo "mb"

echo mb_strlen('uña') // muestra 3
echo mb_strlen('á') // muestra 1
Miguel Angel
3295 146 215 17
Gracias! me ha ayudado bastante. Ciertamente es un poco raro que los acentos requieran usar otras funciones de string. no lo sabía! Excelente aportación acerca de PHP y el manejo de FUNCIONES MB. Todo resuelto, muchas gracias.