¿Cómo obtener el número exacto de caracteres multibyte?
Pregunta
Intenté:
mb_strlen('普通话');
strlen('普通话');
ambos producen 9, mientras que en realidad solo hay 3 caracteres.
¿Cuál es la forma correcta de contar caracteres?
Solución
debe asegurarse de especificar la codificación en el segundo parámetro
es decir
mb_strlen('普通话', 'UTF-8');
vea el manual
Otros consejos
Si no tiene acceso a la extensión de cadena mb, esto también funciona (y creo que es más rápido):
strlen(utf8_decode('普通话')); // 3
Un carácter chino no equivale a un carácter ascii. mb_strlen es la forma correcta de contar caracteres de varios bytes si la cadena en UTF-8 está codificada.
ver aquí: http://www.herongyang.com/PHP-Chinese/ Multibyte-UTF-8-mb_strlen.html
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow