PHPit - PHP

"Agora, pois, permanecem a fé, a esperança, o amor, estes três; mas o maior destes é o amor." (I Coríntios 13:13)

Criando um htmlentities que ignora tags

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:

Código: Alternar entre o modo de cópia/destaque
  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. ?>
<?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...
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! :)

Dim dim

 

Comentaí! (07)

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

Flw! Kuen em 11/12/2007 às 06:55 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.11 no Windows Windows XP
Mazzá gurizão... show de bola cara... muito bom Xorna em 11/12/2007 às 08:00 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.11 no Windows Windows Vista
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 ;-) Talita em 21/12/2007 às 15:57 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.6 no Linux Linux
Saveee, rafa!! cara, teu site eh o melhor! meus parabéns cara! Dale pau mesmo! eheheh!

abraçossss!! Leo em 25/12/2007 às 16:25 utilizando o Mozilla Firefox Mozilla Firefox 3.0b2 no Windows Windows XP
Feliz Natal para vc tb! Gisele Hosncha em 28/12/2007 às 02:37 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.11 no Windows Windows XP
Ooops, Feliz Ano Novo agora!
Hahauuha. Gisele em 28/12/2007 às 02:38 utilizando o Mozilla Firefox Mozilla Firefox 2.0.0.11 no Windows Windows XP
Cara...

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

Meus parabens.. Jefferson Rafael em 07/10/2008 às 19:38 utilizando o Mozilla Firefox Mozilla Firefox 3.0.3 no Windows Windows XP
 

Comenta logo, pô!

* Todos os links inseridos nos comentários possuem rel="nofollow" para impedir com que crawlers considerem os mesmos como relevantes.
* Os e-mails não são divulgados.

Dados pessoais

Você é realmente um humano?

Finalmente, digite seu comentário :)

Caixinha de Sugestões

O que é isso? Aqui você pode simplesmente digitar uma sugestão (artigos, resenhas, melhorias, etc) sem precisar preencher longos formulários. Digite o que quiser na caixinha abaixo e eu lerei com o maior prazer! Se quiser se identificar, fique a vontade!

O PHPit é redigido e mantido por Rafael Jaques - Política de Privacidade.

XHTML/CSS desenvolvido por André Gazola.

PHPit 2007 - 2009 - Alguns direitos reservados.

Feeds ;)

Creative Commons License

PHPit por Rafael Jaques é licensiado sob a Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil License.