Tutorial » Problemas ao contar caracteres com strlen do PHP
10 de setembro de 2009 por Leo Caseiro
Problema
Estava validando uma string que tinha valor máximo de caracteres com a função strlen() do php.
Acontece que a função strlen() funciona muito bem para encoding iso-8859-1 ou quando a string não tem acentuação. Ou seja, quando a string tem um caracter acentuado a função retorna um strlen maior do que realmente deveria.
Para isso, devemos utilizar a função mb_strlen() que possui um segundo parâmetro, onde definimos qual o encoding utilizado.
Solução
Como sempre utilizo encoding utf8 nos sites que desenvolvo, tanto no php/MySQL quanto no html, precisei trocar o strlen pelo mb_strlen():
mb_strlen($string_utf8, 'utf8');
Para mais informações sobre a função mb_stren() acesse:
http://us3.php.net/manual/en/function.mb-strlen.php
Artigos Relacionados:
- Formatar moedas ou números decimais com a função number_format() do PHP
- Trocando o $this do php4 por self no php5
- Função que ordena arrays Randomicamente em JavaScript, como o shuffle() do PHP
- Manual do PHP na própria Máquina em Português do Brasil (PT-BR)
- Como chamar um Javascript externo dentro de um js tipo include
Gostou do Post? Assine o Feed 
Muito bom….
vai ajudar muita gnt no futuro….
parabens
Ótima dica Leo
Acabei de fazer um teste e realmente acontece isso !
O mb_strlen() cumpriu muito bem sua função xD
Valeu !