+2

Converter Texto para HTML

criado por Roberto Bertó em 24/03/2001 12:00pm
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 (& -> &amper;, 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('/&amp;/', '&', $url); // convert back ampersands
   
return "<a href=\"$tmp\">$url</a>";
}
?>

Comentários:

Mostrando 1 - 2 de 2 comentários
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)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)