HTMLeando: para desarrolladores Web

Pregunta


¿Cual expresión regular usar para validar una URL con PHP? 

Responder esta pregunta por dudin el 2009-06-19
Estoy buscando una expresión regular que me permita validar y extraer las URLs que se encuentran dentro de un texto.

Respuestas

Thumb_up
Thumb_down

0%
0%

https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?
 
PHP Example: Automatically link URL's inside text.
 
$text = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $text);
Trozo de código tomado de Snipplr.com. Enviado por tylerhall el 21-3-2007

por maikel el 2009-06-19

Thumb_up
Thumb_down

0%
0%
He usado este patrón y me ha dado resultados bastante buenos:
$patron = "/((\s+(http[s]?:\/\/)|(www\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.(([a-zA-Z]{2}|aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel)(\.[a-z]{2,2})?))\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is"

Al usarlo en una función autolink resulta:
function UrlParser($texto)
$patron = "/((\s+(http[s]?:\/\/)|(www\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.(([a-zA-Z]{2}|aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel)(\.[a-z]{2,2})?))\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is";
     $str = uniqid('');
    $i=0;
	$codes = array();
    while (preg_match($patron, $texto, $matches) ) {
        $i++;
		$link=  isset($matches[0])?$matches[0]:'';
		 if(strrpos($link,'http://')=== false) $link= 'http://'. $link;
		 $short_link = (strlen($link)>35)?self::tinyUrl($link):$link;
		 $codes[$i]['link'] = ' <a rel="external nofollow" title="'.$link.'" href="'.$short_link.'">'.$short_link.'</a> ';		
        $texto = preg_replace($patron , $str.$i, $texto, 1);
    }	
	$i=0;
    while (preg_match("#".$str."([0-9]+)#", $texto, $matches)) {
        $i++;    
        $texto = preg_replace("#".$str."([0-9]+)#", $codes[$i]['link'] , $texto, 1);
    }
 return $texto;
 }
por maikel el 2009-06-19

Anónimo:   Entrar


Consejo: Sé tan específico y descriptivo como puedas. Comparte tu experiencia personal o tus conocimientos.
Puedes investigar para completar tu respuesta.

Puedes poner directamente trozos de código usando las etiquetas [code=php] y [/code] o incrustar desde Snipplr.com [snippet=id_snippet]

Compartir: WebeameMeneame Delicious Digg

Preguntas relacionadas