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
Gostou do Post? Assine o Feed 
Artigos Relacionados:
- Formatar moedas ou números decimais com a função number_format() do PHP
- 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)
- Liberar acesso externo no PHP para AJAX (crossdomain)
- Trocando o $this do php4 por self no php5
Muito útilo o post! Me ajudou bastante!
Acho que todo programador PHP vai se deparar com isso um dia.
Um abraço!
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 !