Converter Texto para HTML
Contribuição de Marcelo de G. Malheiros - mgm inside valedofuturo dot unicamp dot br
Gostaria de ressaltar que essa é a primeira contribuição de nossos leitores para as Crônicas. A dica é, realmente, muito quente e ajudará a muitos a poupar trabalho. Meus agradecimentos ao Marcelo e espero que o Rau-Tu ( http://www.rau-tu.unicamp.br/ ) se popularize!
Esta a rotina faz todo o trabalho - muito utilizado em sites - de converter um texto qualquer para html.
O Algoritmo tem as seguintes peculiaridades:
- converte quebras de linhas em texto (\n) para <br>;
- converte caracteres especiais de html para entidades (& -> &er;, por exemplo);
- converte http:// e ftp:// para links com o cuidado de converter de volta caracteres '&' que façam
parte de uma URL válida;
Essa expressão regular foi tirada de um código do 'guru' de Perl Tom Christiansen, e é inteligente o suficiente para omitir sinais de pontuação no final das URLs, tipo http://www.yahoo.com Também trata de URLs entre caracteres convertidos, tipo <http://www.yahoo.com>.
Eis a rotina:
Gostaria de ressaltar que essa é a primeira contribuição de nossos leitores para as Crônicas. A dica é, realmente, muito quente e ajudará a muitos a poupar trabalho. Meus agradecimentos ao Marcelo e espero que o Rau-Tu ( http://www.rau-tu.unicamp.br/ ) se popularize!
Esta a rotina faz todo o trabalho - muito utilizado em sites - de converter um texto qualquer para html.
O Algoritmo tem as seguintes peculiaridades:
- converte quebras de linhas em texto (\n) para <br>;
- converte caracteres especiais de html para entidades (& -> &er;, por exemplo);
- converte http:// e ftp:// para links com o cuidado de converter de volta caracteres '&' que façam
parte de uma URL válida;
Essa expressão regular foi tirada de um código do 'guru' de Perl Tom Christiansen, e é inteligente o suficiente para omitir sinais de pontuação no final das URLs, tipo http://www.yahoo.com Também trata de URLs entre caracteres convertidos, tipo <http://www.yahoo.com>.
Eis a rotina:
<?php function format_text ($text) { // convert special HTML characters $text = htmlspecialchars($text); // insert links for valid URLs (based on code by Tom Christiansen) $sch = '(http|ftp)'; // URL schemes $any = '\w\-.!~*\'();/?:@&=+$,%#'; // valid characters (RFC 2396) $pun = '.!);?,'; // punctuation that can be at URL end $ent = '&(gt|lt|quot);'; // HTML entities to ignore at URL end $text = preg_replace("{\b($sch://[$any]+?)(?=[$pun]*([^$any]|$ent|$))}ei", 'format_text_aux("\1")', $text); // insert linebreaks return nl2br($text); } function format_text_aux ($url) { $tmp = preg_replace('/&/', '&', $url); // convert back ampersands return "<a href=\"$tmp\">$url</a>"; } ?>
E se eu quiser converter de HTML para texto?
28/07/2004 12:10pm
(~20 anos atrás)
o bug era antigo e o Joao ja corrigiu! Acabei de editar o artigo e ele esta funcionando agora.
03/07/2002 1:42am
(~22 anos atrás)