Como obter o número exato de caracteres de vários bytes?
Pergunta
Eu tentei:
mb_strlen('普通话');
strlen('普通话');
ambos de saída 9, quando na verdade existem apenas 3 personagens.
O que é o caminho certo para contar caracteres?
Solução
Você deve certificar-se de especificar a codificação no segundo parâmetro
ie
mb_strlen('普通话', 'UTF-8');
Outras dicas
Se você não tiver acesso à extensão corda mb isso também funciona (e eu acredito que é mais rápido):
strlen(utf8_decode('普通话')); // 3
Um caractere chinês não é igual a um caractere ascii. mb_strlen é o caminho certo para contar caracteres multi-byte, se a corda no UTF-8 codificado.
veja aqui: http://www.herongyang.com/PHP-Chinese/ multibyte UTF-8-mb_strlen.html
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow