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: 4En 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?
Temas Relacionados
MySQL: Saltos de Línea en MySQL
Consejo | 0 Comentarios
Reparar Archivos de Texto con Saltos de Línea Mixtos
Tutorial | 0 Comentarios
Reescribir Archivos de Texto con una Longitud de Línea Fija
Tutorial | 0 Comentarios
PHP: Determinar el Número de Semana
Tutorial | 1 Comentario
Determinar la Frecuencia de Palabras en un Texto
Tutorial | 0 Comentarios
Contar Frecuencias de Caracteres de un Texto
Tutorial | 0 Comentarios
jQuery: Contar Caracteres de múltiples Cajas de Texto
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.
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: 3A 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