Foros del Web » Programando para Internet » PHP »

expresiones regulares y preg_match

Estas en el tema de expresiones regulares y preg_match en el foro de PHP en Foros del Web. Pues como suponeis, trato de sacar texto de otra web y siguiendo(al menos intentarlo) los pasos de este tutorial: http://www.cristalab.com/tutoriales/capturar-datos-de-sitios-web-externos-con-php-c221l/ he llegado a este codigo ...
  #1 (permalink)  
Antiguo 07/10/2012, 09:29
 
Fecha de Ingreso: agosto-2012
Mensajes: 16
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta expresiones regulares y preg_match

Pues como suponeis, trato de sacar texto de otra web y siguiendo(al menos intentarlo) los pasos de este tutorial: http://www.cristalab.com/tutoriales/capturar-datos-de-sitios-web-externos-con-php-c221l/

he llegado a este codigo

Código PHP:
$exp='(?:<li >)(?:<a title=".*" href=".*">)(?:<span class="song">)(.+)(?:<\/span>) - (?:<span class="group">(.+)(?:<\/span>)(?:<\/a>)  (?:<a class="play" lang="en" xml:lang="en" title="Escuchar en una ventana independiente" onclick=".*" href=".*">)(?:<img alt=".*" src=".*" \/>)(?:<\/a>)(?:<p class="comment">) (.+) kbps | (?:.*)(?:<\/p>)(?:<span class="length">)(.+)(?:<\/span>)(?:<\/li>)'
para tratar de sacar el titulo, artista, duracion, bitrate.. de textos similares a

Código HTML:
<li class="even"><a title="Escuchar Dolores se llamaba lola - los suaves" href="listen/6604401/dolores-se-llamaba-lola-los-suaves"><span class="song">Dolores se llamaba lola</span> - <span class="group">los suaves</span></a> <a class="play" lang="en" xml:lang="en" title="Escuchar en una ventana independiente" onclick="window.open('http://www.goear.com/listen_popup.php?v=6604401','','width=800,height=450,resizable=yes')" href="javascript:void(0);"><img alt="Play" src="http://www.goear.com/lib/img/popup.png" /></a><p class="comment"> 128 kbps | &iquest;d&oacute;nde vas bala perdida?</p><span class="length">4:02</span></li>

<li ><a title="Escuchar oyeme mi lola - jarabe de palo" href="listen/3e31242/oyeme-mi-lola-jarabe-de-palo"><span class="song">oyeme mi lola</span> - <span class="group">jarabe de palo</span></a> <a class="play" lang="en" xml:lang="en" title="Escuchar en una ventana independiente" onclick="window.open('http://www.goear.com/listen_popup.php?v=3e31242','','width=800,height=450,resizable=yes')" href="javascript:void(0);"><img alt="Play" src="http://www.goear.com/lib/img/popup.png" /></a><p class="comment"> 121 kbps | mira su manera de caminar...</p><span class="length">3:17</span></li>

<li class="even"><a title="Escuchar Lola - the kinks" href="listen/ee1ae4c/lola-the-kinks"><span class="song">Lola</span> - <span class="group">the kinks</span></a> <a class="play" lang="en" xml:lang="en" title="Escuchar en una ventana independiente" onclick="window.open('http://www.goear.com/listen_popup.php?v=ee1ae4c','','width=800,height=450,resizable=yes')" href="javascript:void(0);"><img alt="Play" src="http://www.goear.com/lib/img/popup.png" /></a><p class="comment"> 192 kbps | it's a hit.</p><span class="length">4:11</span></li> 

el codigo entero es este

Código PHP:
<?

 $buscar 
$_GET["buscar"];

 
$contenido file_get_contents('http://www.goear.com/search/$buscar/');

 
$expresion ='(?:<li >?)(?:<a title=".*" href=".*">)(?:<span class="song">)(.+)(?:<\/span>) - (?:<span class="group">(.+)(?:<\/span>)(?:<\/a>)  (?:<a class="play" lang="en" xml:lang="en" title="Escuchar en una ventana independiente" onclick=".*" href=".*">)(?:<img alt=".*" src=".*" \/>)(?:<\/a>)(?:<p class="comment">) (.+) kbps | (?:.*)(?:<\/p>)(?:<span class="length">)(.+)(?:<\/span>)(?:<\/li>)';
 
 
preg_match_all($expresion,$contenido,$matches);
 
 
print_r($matches[1]);

?>
y el error

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '(' in /opt/lampp/htdocs/prueba.php on line 11

La verdad es que estoy muy perdido, he intentado hacer la expresion lo mejor posible pero no se donde esta el error.. alguien puede ayudarme?
  #2 (permalink)  
Antiguo 07/10/2012, 09:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: expresiones regulares y preg_match

Lee el siguiente tema:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/10/2012, 15:58
 
Fecha de Ingreso: agosto-2012
Mensajes: 16
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: expresiones regulares y preg_match

Cita:
Iniciado por pateketrueke Ver Mensaje
Lee el siguiente tema:
[url]http://www.forosdelweb.com/f18/aporte-expresiones-pcre-646110/[/url]

muchas gracias, me ha sido de utilidad

pero el patron se pierde y solo me muestra el ultimo resultado al ser un texto seguido (sin saltos de liinea), agrupando el texto y separandolo con saltos de linea si logra capturas todos los resultados

he hecho trampas añadiendo

Cita:
$contenido = str_replace('li><li','li>
<li',$contenido);
ya que editando la expresion soy incapaz de lograrlo

Última edición por onezzz; 08/10/2012 a las 09:57

Etiquetas: expresiones, 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 04:03.