lunes, 20 de junio de 2011

Convertir texto a url-link con php

He encontrado en internet una funcion para poder convertir direcciones de paginas web que empiecen con www o http:// o ftp:// y tambien una direccion de correo valida a mailto://, que se encuentran dentro de una cadena de texto a un link html.

[php]
// Funcion para buscar dentro de una cadena http, ftp, www, @ y convertirlo a link

function texto_a_url($text){
// pad it with a space so we can match things at the start of the 1st line.
$ret = ' ' . $text;

// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
// xxxx can only be alpha characters.
// yyyy is anything up to the first space, newline, comma, double quote or <
$ret = preg_replace("#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", '\1\2://\3', $ret);

// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
// zzzz is optional.. will contain everything up to the first space, newline,
// comma, double quote or <.
$ret = preg_replace("#([\t\r\n ])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", '\1\2.\3', $ret);

// matches an email@domain type address at the start of a line, or after a space.
// Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
$ret = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1\\2@\\3", $ret);

// Remove our padding..
$ret = substr($ret, 1);

return($ret);
}


//$ejemplo="visiten www.sourcepy.com o http://www.sourcepy.com. Contactame via info@sourcepy.com";
//echo texto_a_url($ejemplo);

?>
[/php]

3 comentarios:

  1. 1000 gracias, de verdad. El único código de un montón de páginas (y algunas muy famosas) que funciona de verdad. Pocas lineas, bien explicadas, y funciona a la 1era (Evidentemente después de descomentar las lineas de abajo para probarlo rápidamente).

    ResponderEliminar
  2. Digo lo mismo que torito, Es el único código después de probar muchos, QUE FUNCIONA MUY BIEN.</

    Un millon de gracias.

    ResponderEliminar
  3. De verdad que funciona a la primera. Eskerrikasko.

    ResponderEliminar