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

Novo Comentário:

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