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
(~23 anos atrás)