Estou de volta com o 4ª post sobre tratamento de strings, e para esta postagem estudei um pouco sobre o count_chars. A função basicamente faz a contagem das ocorrências dos caracteres de uma string. Assim, é possível avaliar quantas vezes um determinado caractere repete dentro desta string.
A função possui 4 modos de busca que são passados por parâmetros. Abaixo vou explicar um pouco de cada um destes modos.
count_chars na prática
Como a teoria desta função é relativamente simples não vamos nos prolongar e colocar a mão na massa com um exemplo bem simples usando este comando.
count_chars no modo 0
Ao utilizar a função no modo 0 – count_chars($text_print,0) – O comando retornará um array com os códigos ASCII de todos os caracteres ASCII em um array e mostrará a ocorrência de cada um deles, mesmo os que não tiveram ocorrência.
Abaixo fiz um teste com a frase “DialHost – Desenvolvendo um exemplo com count_chars”.
<?php $text_print = 'DialHost - Desenvolvendo um exemplo com count_chars'; $str_md0 = count_chars($text_print,0); echo '<h2> String de exemplo: '.$text_print.'</h2>'; echo '<hr>'; echo '<h2> Imprimindo todas as ocorrencias de todos os tipos de caracteres dentro da String:</h2>'; echo '<p>'; foreach ($str_md0 as $key=>$value){echo utf8_encode(chr($key)). ': ' . $value . ' vezes'.'<br>'; }; echo '</p>'; ?>
Defini a variável $text_print para colocar a frase que eu gostaria de analisar e então coloquei o resultado do count_chars dentro da variável $str_md0. Isto porque ele me retorna um array e eu terei que tratá-lo para ter a impressão correta das recorrências dos caracteres. Agora que já temos todos os caracteres dentro do array é só varrer este array e ir imprimindo os respectivos caracteres e suas ocorrências na string.
Neste código tive que usar o utf8_encode e o comando chr. O primeiro para mostrar os caracteres especiais de forma correta e o segundo para identificar o caractere referente ao código ASCII do array. Vale lembrar que o retorno deste comando é enorme já que ele retorna tanto os caracteres que foram utilizados quanto os que não foram. Confiram o resultado neste link.
Modo 1
O modo 1 – count_chars($text_print,1) – já possui um filtro sobre as ocorrências da string. Ele avalia a string e retorna um array de todos os caracteres ASCII que possuem pelo menos uma ocorrência. Isto evita a lista gigantesca de caracteres que não estão presentes na string passada. Abaixo está o mesmo exemplo que fiz no modo 0 só que agora utilizando o modo 1:
<?php $text_print = 'DialHost - Desenvolvendo um exemplo com count_chars'; $str_md1 = count_chars($text_print,1); echo '<h2> String de exemplo: '.$text_print.'</h2>'; echo '<hr>'; echo '<a name="mod1"><h2> Imprimindo todas as ocorrencias dos caracteres que existem na String:</h2></a>'; echo '<p>'; foreach ($str_md0 as $key=>$value){echo utf8_encode(chr($key)). ': ' . $value . ' vezes'.'<br>'; }; echo '</p>'; ?>
Em suma aqui está tudo igual ao item anterior, a diferença será no restultado que vocês podem conferir neste link
Modo 2
Se o modo 1 mostra todas os caracteres que possuíram pelo menos 1 ocorrência, o modo 2 faz exatamente o contrário. Ele avalia a string e retorna um array de todos os caracteres ASCII que não possuem ocorrências.
<?php $text_print = 'DialHost - Desenvolvendo um exemplo com count_chars'; $str_md1 = count_chars($text_print,2); echo '<h2> String de exemplo: '.$text_print.'</h2>'; echo '<hr>'; echo '<a name="mod2"><h2>Imprimindo todos os caracteres que não possuem ocorrências na String:</h2></a>'; echo '<p>'; foreach ($str_md0 as $key=>$value){echo utf8_encode(chr($key)). ': ' . $value . ' vezes'.'<br>'; }; echo '</p>'; ?>
Novamente, a diferença será no resultado que vocês podem conferir neste link
Modo 3
O modo 3 é mais simples que os demais. Ele apenas retornará todos os caracteres utilizados pela string. Desta vez porém, não retornará quantas vezes ele se repetiu. O retorno será uma simples string que no exemplo abaixo retornará isto: -DH_acdehilmnoprstuvx.
<?php $text_print = 'DialHost - Desenvolvendo um exemplo com count_chars'; echo '<a name="mod3"><h2> Imprimindo todos os caracteres utilizados na String:</h2></a>'; echo '<p>'.utf8_encode(count_chars($text_print,3)).'</p>'; ?>
Para conferir o resultado deste exemplo basta clicar neste link.
Modo 4
Acho que todos já estão prevendo que este último modo não será nenhuma novidade… sim ele tem o efeito contrário do modo 3 exibindo apenas os caracteres não utilizados na string.
<?php $text_print = 'DialHost - Desenvolvendo um exemplo com count_chars'; echo '<a name="mod4"><h2> Imprimindo todos os caracteres não utilizados na String:</h2></a>'; echo '<p>'.utf8_encode(count_chars($text_print,4)).'</p>'; ?>
Para conferir o resultado deste exemplo basta clicar neste link.
Bem, espero que este comando tenha sido útil para vocês e nos vemos na próxima. Quem quiser se aprofundar sobre exemplos de uso deste comando o manual do PHP pode ser muito útil