Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Expresión Regular para HTML google

Estas en el tema de Expresión Regular para HTML google en el foro de PHP en Foros del Web. Buenas: Tengo un script que hace una consulta a google con cURL, muy sencillo. Básicamente guardo en una variable "$google" el HTML equivalente a cuando ...
  #1 (permalink)  
Antiguo 28/07/2015, 16:08
 
Fecha de Ingreso: abril-2009
Ubicación: En foros del web, normalmente en Web general, HTML y CSS.
Mensajes: 258
Antigüedad: 15 años
Puntos: 3
Expresión Regular para HTML google

Buenas:

Tengo un script que hace una consulta a google con cURL, muy sencillo.

Básicamente guardo en una variable "$google" el HTML equivalente a cuando vas a www.google.es y haces una búsqueda cualquiera: https://www.google.es/#q=palabra+clave

Necesito obtener los el enlace de los 10 resultados que me ha devuelto google, estoy intentando aplicar una expresión regular al HTML:

Código PHP:
preg_match('/.*\<a\shref=\"\/url\?q=(.*)\"\>.*/'$google$get); 
Pero solo consigo coger el link del primer resultado, no de los 10 que aparecen.

También he probado a usar la expresión regular típica para coger una URL:

Código PHP:
^http(s)?://([w-]+.)+[w-]+([w- ./?%&=])?$ 
Pero nada. Es evidente que es una tontería muy sencilla pero me he atascado. Gracias!
__________________
¿Por qué Anónimo?, porque como está el mundo no podemos considerarnos humanos...
  #2 (permalink)  
Antiguo 28/07/2015, 16:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresión Regular para HTML google

Debes usar preg_match_all() en lugar de sólo preg_match(), además se devuelve un array y deberás modificar tu código un poco.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/07/2015, 05:27
 
Fecha de Ingreso: abril-2009
Ubicación: En foros del web, normalmente en Web general, HTML y CSS.
Mensajes: 258
Antigüedad: 15 años
Puntos: 3
Respuesta: Expresión Regular para HTML google

Muchas gracias!, vaya despiste, ha funcionado con el preg_match_all, sin embargo me coge el enlace de 8 de los 10 resultados de google, no sé por qué se deja 2 ya que tienen la misma estructura. Esto es uno de los resultados de google:

Código HTML:
Ver original
  1. <a href="/url?q=http://www.midominio.es/carpeta/&amp;sa=U&amp;ved=0CAgQFjAAahUKEwjqzoPbjoDHAhUHe5IKHaxHDyc&amp;usg=AFQjCNG8qWilKEDqLIXkKyRXOyS3cTizcQ">Prueba de enlace</a>

Y esta es la expresión regular:

Código PHP:
preg_match('/.*\<a\shref=\"\/url\?q=(.*)\"\>.*/'$google$get); 
¿En qué puede fallar?.

EDITO:

Lo saqué!!!

Había que perfilar la expresión regular, por ejemplo tenía puesto un selector universal en medio que me cogía de todo.

No doy el tema por solucionado porque tengo otra dudilla que comentaré cuando la investigue por un poco más a fondo.

Un saludo.
__________________
¿Por qué Anónimo?, porque como está el mundo no podemos considerarnos humanos...

Última edición por Anonimo12; 29/07/2015 a las 06:17

Etiquetas: google, html, regular, variable
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 20:51.