Foros del Web » Programando para Internet » PHP »

Problema con preg_match en curl

Estas en el tema de Problema con preg_match en curl en el foro de PHP en Foros del Web. El otro día navegando me llamo mucho la atención este tema: http://www.forosdelweb.com/f18/problema-con-preg_match-preg_match_all-776220/ pero como ya tiene más de 6 meses abri otro, para consultar unas ...
  #1 (permalink)  
Antiguo 12/01/2011, 15:11
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 13 años, 9 meses
Puntos: 3
Problema con preg_match en curl

El otro día navegando me llamo mucho la atención este tema: http://www.forosdelweb.com/f18/problema-con-preg_match-preg_match_all-776220/ pero como ya tiene más de 6 meses abri otro, para consultar unas dudas.

Utilizo el mismo codigo que el:

Código:
$url="http://www.seriesyonkis.com/temporada/a-dos-metros-bajo-tierra/101/"; 
$ch = curl_init($url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
$content = curl_exec ($ch); 
curl_close ($ch); 



if(preg_match('#(<li class="page_item"><h5>)(.*)#i', $content, $resultados)) 
{ 


    $res= $resultados[1] . $resultados[2]; 
    //$capitulos = explode("</a></h5></li>", $res); 
    //$total = count($capitulos); 
    print $res; 
}
Y se imprime para todos los capitulos:

Código:
<li class="page_item"><h5><a href="http://www.seriesyonkis.com/capitulo/a-dos-metros-bajo-tierra/capitulo-1/1926/" title="Piloto">A Dos Metros Bajo Tierra 1x01 - Piloto</a></h5></li>
Pero quisiera solo el nombre en el ejemplo anterior seria Piloto y uso esto:

Código:
<?php

$url="http://www.seriesyonkis.com/temporada/a-dos-metros-bajo-tierra/101/"; 
$ch = curl_init($url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
$content = curl_exec ($ch); 
curl_close ($ch); 


$res=" ";
if(preg_match('#(<li class="page_item"><h5>)(.*)#i', $content, $resultados)) 
{ 


    $res= $resultados[1] . $resultados[2]; 
    //$capitulos = explode("</a></h5></li>", $res); 
    //$total = count($capitulos); 
   
} 



$res2=" ";
if(preg_match('#(- )(.*)#i', $res, $resultados)) 
{ 


    $res2= $resultados[1] . $resultados[2]; 
    //$capitulos = explode("</a></h5></li>", $res); 
    //$total = count($capitulos); 
   
} 




$res3=" ";
if(preg_match('#( )(.*)#i', $res2, $resultados)) 
{ 


    $res3= $resultados[1] . $resultados[2]; 
    //$capitulos = explode("</a></h5></li>", $res); 
    //$total = count($capitulos); 
   
} 

echo"$res3";


?>

Si muestra lo que quiero pero solo el el primer episodio en los demas sale:


Código:
<li class="page_item"><h5><a href="http://www.seriesyonkis.com/capitulo/a-dos-metros-bajo-tierra/capitulo-1/1926/" title="Piloto">A Dos Metros Bajo Tierra 1x01 - Piloto</a></h5></li>
Me imagino que el preg_match tengo un error en la forma en que lo utilizo o no se, espero puedan ayudarme saludos
  #2 (permalink)  
Antiguo 12/01/2011, 15:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con preg_match en curl

precisamente preg_match_all() sirve para capturar todos las coincidencias, si usas preg_match() únicamente te entregará la primera...

te invito a leer lo siguiente:
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 12/01/2011, 18:12
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: Problema con preg_match en curl

Gracias por responder, creo que sigo usando mal las funciones, ya que me lo imprime igual que antes, solo afecta el primero:

Código:
<?php

$url="http://www.seriesyonkis.com/temporada/a-dos-metros-bajo-tierra/101/"; 
$ch = curl_init($url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
$content = curl_exec ($ch); 
curl_close ($ch); 


$res=" ";
if(preg_match('#(<li class="page_item"><h5>)(.*)#i', $content, $resultados)) 
{ 
    $res= $resultados[1] . $resultados[2];   
} 




$res2=" ";
if(preg_match_all('#(- )(.*)#i', $res, $resultados))
{
foreach($resultados as $valor) {
$res2="$valor[0]";
} 


}
echo"$res2";

?>
Saludos y gracias.
  #4 (permalink)  
Antiguo 19/07/2011, 14:38
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con preg_match en curl

Prueba cambiando la expresión regular por estas:

Código:
'#(<li class="page_item"><h5>)(.*)#U'
Código:
'#(- )(.*)#U'
Un saludo!

Etiquetas: curl
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 16:05.