11 Voto

PHP: strlen - Resultado incorrecto para Diacríticos, Acentos y Caracteres Unicode

Pregunta de Invitado | 30/10/2026 a las 17:37

Utilizo la función de PHP strlen() para determinar y comprobar la longitud de los datos introducidos por el usuario. Lamentablemente, esta función solo funciona con cadenas de texto que no contienen signos diacríticos, acentos, diéresis u otros caracteres Unicode.

echo strlen("abc");  // resultado: 3
echo strlen("äbc");  // resultado: 4

En mi script, necesito obtener el número exacto de caracteres de la string proporcionada, y me gustaría que el resultado fuera "3" tanto para "abc" como para "äbc".

¿Se trata de un error en PHP o qué puedo hacer para solucionarlo?

ResponderPositivoNegativo
2Mejor Respuesta2 Votos

Un solo carácter puede codificarse en más de un byte, dependiendo de la codificación de caracteres utilizada.

Un ejemplo típico es la codificación UTF-8, utilizada en la mayoría de los sitios web. En esta codificación, caracteres como la "a" hasta la "z" se representan mediante un solo byte, mientras que caracteres como "ä", "ü" u "ö" requieren varios bytes.

La función strlen() solo cuenta el número de bytes; no tiene en cuenta el significado ni la codificación de dichos bytes. Por lo tanto, es preferible utilizar la función mb_strlen() en lugar de strlen().

echo mb_strlen("abc", "utf-8");  // resultado: 3
echo mb_strlen("äbc", "utf-8");  // resultado: 3

A diferencia de strlen(), la función multibyte mb_strlen() tiene en cuenta la codificación y la longitud resultante de los caracteres.

Como primer parámetro, puede pasar la cadena que desea analizar; la codificación puede indicarse como segundo parámetro. Si su sitio web utiliza la codificación UTF-8 —como ocurre con la mayoría de los sitios web—, debeespecificar "utf-8" en este apartado.
01/11/2026 a las 00:37

ResponderPositivo Negativo
Responder

Temas Relacionados

MySQL: Saltos de Línea en MySQL

Consejo | 0 Comentarios

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.