Criando um htmlentities que ignora tags em PHP

Prefácio

Salve, salve, galerinha da MX Studio. Venho vos escrever após um certo período de recesso…

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
function htmlwtags($str) {

// Pega todos os caracteres que devem ser convertidos
$caracteres = get_html_translation_table(HTML_ENTITIES);

// Encontra a lista de caracteres que serão retirados da tabela
$remover = get_html_translation_table(HTML_SPECIALCHARS);

// Remove os caracteres que não deve ser convertidos (caracteres html)
$caracteres = array_diff($caracteres, $remover);

// Traduz tudo bonitinho!
$str = strtr($str, $caracteres);

// Êêêêêêê!!! \o/
return $str;

}
?>

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…
xDDD

Aceito sugestões sempre, beleza?

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

Escrito por Rafael Jaques on janeiro 19, 2009. Arquivado em PHP. Você pode seguir as respostas a esse artigo pelo RSS 2.0. Você pode deixar respostas para esse artigo

2 respostas a Criando um htmlentities que ignora tags em PHP

  1. Parabéns cara, a função é redonda! =)
    Me ajudou bastante aqui.

    Abraço!

  2. Desculpe a minha ignorância, mas como eu uso isso?

    obs: eu ainda sou um ‘noob’ em php. XD

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>