Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Sacar links con xpresiones regulares y preg_match_all

Estas en el tema de Sacar links con xpresiones regulares y preg_match_all en el foro de PHP en Foros del Web. Hola! Estoy intentando sacar los links de una pagina con el siguiente codigo: Código PHP: $url = "http://localhost/links.html" ; $html = file_get_contents ( $url ); ...
  #1 (permalink)  
Antiguo 22/12/2016, 15:22
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Sacar links con xpresiones regulares y preg_match_all

Hola!
Estoy intentando sacar los links de una pagina con el siguiente codigo:
Código PHP:
$url="http://localhost/links.html";
$html=file_get_contents($url);
$regex="/\/\w+-album-fotos.+\w+\.html/";
preg_match_all($regex,$html,$links_found);
print_r($links_found); 
Como son links relativos la expresion regular que uso es esta:
\/\w+-album-fotos.+\w+\.html
la cual me funciona bien en la web http://regexr.com/ pero cuando la uso en mi web con el código de arriba, no me coge bien el link, y me devuelve esto:
/boda-album-fotos-12345.html' style='text-decoration:none;'> etc..

Alguien sabe porque?
Saludos!
__________________
Tecnología y tutoriales
  #2 (permalink)  
Antiguo 22/12/2016, 15:35
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Sacar links con xpresiones regulares y preg_match_all

Ya se lo que pasa, aunque no se como solucionarlo....
Pasa lo siguiente:
En el codigo fuente hay esto:
Código PHP:
<a href='http://localohost/boda-album-fotos-12645.html' style='text-decoration:none;'><a href='http://localohost/boda-album-fotos-19995.html' style='text-decoration:none;'><a href='http://localohost/comunion-album-fotos-12215.html' style='text-decoration:none;'><a href='http://localohost/comunion-album-fotos-10011.html' style='text-decoration:none;'><a href='http://localohost/boda-album-fotos-13091.html' style='text-decoration:none;'
Entonces la expresion regular comienza a buscar, y encuentra el link, pero no para hasta que llega al ultimo ".html"
Como tengo que hacer para que busque el link de este tipo:
album-fotos(loquesea).html
y pare en el primer html que encuentre?
__________________
Tecnología y tutoriales
  #3 (permalink)  
Antiguo 22/12/2016, 15:39
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Sacar links con xpresiones regulares y preg_match_all

Prueba cambiar .+ por .+? y eliminar el w+
algo asi:
Código Ejemplo:
Ver original
  1. $regex= "@/.*?\-album\-fotos.+?\.html@";
También puedes usar la letra u después del ultimo @ , con esto evitas la codicia/avaricia(greediness), osea que atrape algo pero lo menos posible (.*?)
__________________
Rodrigo Agüero
  #4 (permalink)  
Antiguo 22/12/2016, 16:11
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Sacar links con xpresiones regulares y preg_match_all

Vaya!
Pues perfecto!!
Muchas gracias!
__________________
Tecnología y tutoriales

Etiquetas: html, links, regulares
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:31.