BuscaPé, líder em comparação de preços na América Latina

PHPit

Pular navegação

Criando um htmlentities que ignora tags

Enviado em 10/12/2007 às 20:49

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:

  1. <?php
  2.  
  3. function htmlwtags($str) {
  4.  
  5. // Pega todos os caracteres que devem ser convertidos
  6. $caracteres = get_html_translation_table(HTML_ENTITIES);
  7.  
  8. // Encontra a lista de caracteres que serão retirados da tabela
  9. $remover = get_html_translation_table(HTML_SPECIALCHARS);
  10.  
  11. // Remove os caracteres que não deve ser convertidos (caracteres html)
  12. $caracteres = array_diff($caracteres, $remover);
  13.  
  14. // Traduz tudo bonitinho! :)
  15. $str = strtr($str, $caracteres);
  16.  
  17. // Êêêêêêê!!! \o/
  18. return $str;
  19.  
  20. }
  21.  
  22. ?>


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! :)

 

Comente (07)




Comentário #1
Autor: Kuen
Em: 11/12/2007 às 06:55

Ahhhh!!! eu vi tu criando isso!!! Do trabalho para o Blog!! hehehe!!! Boaa!!

Flw!

Comentário #2
Autor: Xorna
Em: 11/12/2007 às 08:00

Mazzá gurizão... show de bola cara... muito bom

Comentário #3
Autor: Talita
Em: 21/12/2007 às 15:57

Oie Rafa,

Gosto mto dos seus artigos, um deles (sobre expressões regulares) adicionei no Via6, espero que mta gente possa ler, achei mto bom.

Esse tbm é ótimo, parabéns.
Seu blog já está add nos delicious, virou uma consulta hehe.

Obrigada pelo apoio, e parabéns ;-)

Comentário #4
Autor: Leo
Em: 25/12/2007 às 16:25

Saveee, rafa!! cara, teu site eh o melhor! meus parabéns cara! Dale pau mesmo! eheheh!

abraçossss!!

Comentário #5
Autor: Gisele Hosncha
Em: 28/12/2007 às 02:37

Feliz Natal para vc tb!

Comentário #6
Autor: Gisele
Em: 28/12/2007 às 02:38

Ooops, Feliz Ano Novo agora!
Hahauuha.

Comentário #7
Autor: Jefferson Rafael
Em: 07/10/2008 às 19:38

Cara...

Muito boa a sua função, era simplesmente o que eu estava procurando.

Meus parabens..

Artigos Recentes

Rafael Jaques - PHPit 2007
Site sob Creative Commons - Alguns direitos reservados

Assine o RSS do PHPit! :)
Saiba onde tem o melhor preço antes de comprar