Criando um htmlentities que ignora tags

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

Prefácio

Salve, salve, galerinha. Venho vos escrever após um certo período de recesso, onde estive envolvido com MUITOS projetos, um deles inclusive é o novo layout do PHPit, o qual estou preparando para o ano vindouro.

Sem mais delongas, vamos para o que interessa.
O intuito hoje é montar uma função semelhante ao htmlentities, mas que ignore as tags que existem no seu texto.

Bem bacana e bem simples de fazer! :)

Conceito

O primeiro passo é obter a tabela de conversão de caracteres. Com a get_html_translation_table, nós iremos passar a constante HTML_ENTITIES a fim de obter a tabela com todos os caracteres traduzidos pela função htmlentities.

Uma vez feito isso, vamos obter a tabela de conversão de caracteres referente a função htmlspecialchars, a qual traduz apenas caracteres que dizem respeito aos caracteres especiais utilizados por tags html. A constante agora é HTML_SPECIALCHARS.

Depois disso devemos computar a diferença entre uma array e outra, a fim de retirar os caracteres do html de dentro de todos os outros (que aqui tratam-se de letras acentuadas, basicamente).

Feito isso, finalmente usamos a strtr para traduzirmos os caracteres! :)

Vamos por isso em prática?

Mão na massa

Juntando tudo isso, teremos um código semelhante a este:

[php][/php]

Função bem bonitinha e bem simples. Resultados garantidos! Qualquer bug, me mande um e-mail, por favor! :D

Conclusão

Não tem muita coisa o que concluir hoje, então serei breve…
Espero que esta seja a minha última coluna antes do novo layout…
xDDD

Aceito sugestões sempre, beleza?

Um forte abraço a todos e fiquem com Deus! :)