Foros del Web » Programando para Internet » PHP »

Problema con file_get_contents y preg_match_all

Estas en el tema de Problema con file_get_contents y preg_match_all en el foro de PHP en Foros del Web. Hola a todos, Me he vuelto loco buscando como solucionar este problema, en foros, ayudas y tutoriales pero al final me he decidido a postear ...
  #1 (permalink)  
Antiguo 19/07/2011, 10:47
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Problema con file_get_contents y preg_match_all

Hola a todos,

Me he vuelto loco buscando como solucionar este problema, en foros, ayudas y tutoriales pero al final me he decidido a postear a ver si alguno de vosotros puede echarme una mano.

Intento recoger los valores de una página web que están entre item...?id= y ','. El problema es que cuando el string lo pego en mi archivo php sacandolo directamente del código fuente de la url de destino me funciona y me muestra todos los valores en un array pero cuando accedo a la url con file_get_contents me lo mete todo en la posición 0 del array y así no me sirve para nada.

Os pongo el código que he usado

Código:
<?php
$url = "http://aion.yg.com/npc/udas-guard?id=215799";
$str = file_get_contents($url);

$do1 = preg_match_all("#(\'\/item\/.*id=)(.*?)(\'\,)#i", $str, $matches1);
echo "ARRAY2<br/><pre>";
print_r($matches1);
echo "</pre>";
?>
Un saludo y gracias de antemano.
  #2 (permalink)  
Antiguo 19/07/2011, 10:52
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problema con file_get_contents y preg_match_all

tienes activo allow_url_fopen, de lo contrario no funcionará, puedes usar cURL también
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 19/07/2011, 11:09
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con file_get_contents y preg_match_all

Lo tengo activado en el php.ini:

allow_url_fopen = On

Y con curl utilicé este código y tampoco:

Código:
function curl_get_file_contents($URL)
    {
        $c = curl_init();
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($c, CURLOPT_URL, $URL);
        $contents = curl_exec($c);
        curl_close($c);

        if ($contents) return $contents;
            else return FALSE;
    }
	
	$str=curl_get_file_contents("http://aion.yg.com/npc/udas-guard?id=215799");
  #4 (permalink)  
Antiguo 19/07/2011, 12:28
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con file_get_contents y preg_match_all

Siguiendo investigando lo único que se me ocurre es que haya que transformar de alguna manera el string que recibes con file_get_contents ya que como menciono en el post inicial copiando el código fuente de la página en el propio archivo php si funciona.

He probado con htmlentities, htmlspecialchars, escapando carácteres con addslashes y addcslashes pero sigue devolviéndome el string entero en la posición 0 del array. :(
  #5 (permalink)  
Antiguo 19/07/2011, 14:02
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problema con file_get_contents y preg_match_all

Listo el problema estaba en la expresión regular :S

Hay que evitar que los cuantificadores sean greedy. Creia que con "?" esto se evitaba pero al final he tenido que usar "U" quedando la expresión regular así:

Código:
#(\'\/item\/.*id=)(.*)(\'\,)#U
Un saludo!

Etiquetas: Ninguno
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 13:19.