2011-07-06 20 views
10

estoy tratando de obtener algunos datos JSON desde una URL como esta:Equivalente a file_get_contents() con CURL?

$url = 'http://site.com/search.php?term=search term here'; 
$result = json_decode (file_get_contents($url)); 

Sin embargo servicio de hosting del cliente tiene la allow_url_fopen establecimiento de discapacitados, por lo tanto, el código anterior no funciona.

¿Cuál es el código equivalente de las líneas de arriba? Básicamente, un término de búsqueda debe enviarse a través del $_GET a la url.

+0

Protegí esto debido a que el número de respuestas casi _identical_. Gente, considere votar una respuesta existente antes de agregar otra, especialmente si una respuesta existente cubre exactamente el mismo terreno que desea cubrir. Ahora tenemos cinco ejemplos casi idénticos de cómo recuperar una URL usando curl. –

+1

@Tim Post considera que a. todos los que respondieron la pregunta hasta el momento tenían> 10 repeticiones, y todas las respuestas hasta ahora se dieron minutos después de que se hizo la pregunta. Por lo tanto, no creo que la protección sea necesaria. Hubiera eliminado mi respuesta (no fui el primero), pero parece ser la única que incluye el manejo de errores, y es la más votada al momento de escribir esto. – phihag

+0

@phihag Me preocupaba que esto obtuviera muchos más puntos de vista de lo que lo hizo (debido a que pasé bastante tiempo en la página principal). Las preguntas que extraen muchas respuestas duplicadas también tienden a atraer muchas banderas, principalmente debido a los nuevos usuarios que tratan de ganar reputación. Me estaba asegurando de que la lista no siguiera creciendo :) En cualquier caso, sin protección ahora. –

Respuesta

6

De esta manera:

$url = 'http://site.com/search.php?term=search term here'; 

$rCURL = curl_init(); 

curl_setopt($rCURL, CURLOPT_URL, $url); 
curl_setopt($rCURL, CURLOPT_HEADER, 0); 
curl_setopt($rCURL, CURLOPT_RETURNTRANSFER, 1); 

$aData = curl_exec($rCURL); 

curl_close($rCURL); 

$result = json_decode ($aData); 
4

Todo lo que necesita está aquí.

http://nadeausoftware.com/articles/2007/06/php_tip_how_get_web_page_using_curl

Básicamente, intentar algo como esto

function get_web_page($url) 
{ 
    $options = array(
     CURLOPT_RETURNTRANSFER => true,  // return web page 
     CURLOPT_HEADER   => false, // don't return headers 
     CURLOPT_FOLLOWLOCATION => true,  // follow redirects 
     CURLOPT_ENCODING  => "",  // handle all encodings 
     CURLOPT_USERAGENT  => "spider", // who am i 
     CURLOPT_AUTOREFERER => true,  // set referer on redirect 
     CURLOPT_CONNECTTIMEOUT => 120,  // timeout on connect 
     CURLOPT_TIMEOUT  => 120,  // timeout on response 
     CURLOPT_MAXREDIRS  => 10,  // stop after 10 redirects 
    ); 

    $ch  = curl_init($url); 
    curl_setopt_array($ch, $options); 
    $content = curl_exec($ch); 
    $err  = curl_errno($ch); 
    $errmsg = curl_error($ch); 
    $header = curl_getinfo($ch); 
    curl_close($ch); 

    $header['errno'] = $err; 
    $header['errmsg'] = $errmsg; 
    $header['content'] = json_decode($content); 
    return $header; 
} 
1

han comprobado que fuera así.?

function file_get_contents_curl($url) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser. 
    curl_setopt($ch, CURLOPT_URL, $url); 

    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
} 

Thanks.

1
// create a new cURL resource 
$ch = curl_init(); 

// set parameters 
$parameters = array(
    'foo'=>'bar', 
    'herp'=>'derp' 
); 

// add get to url 
$url = 'http://example.com/index.php' 
$url.= '?'.http_build_query($parameters, null, '&'); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return the content 

// execute 
$data = curl_exec($ch); 

A continuación, debe tener el contenido del archivo de datos de $, es probable que desee hacer una verificación de errores pero se pueden encontrar la manera de hacer que al php.net.

5
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$jsonData = curl_exec($ch); 
if ($jsonData === false) { 
    throw new Exception('Can not download URL'); 
} 
curl_close($ch); 
$result = json_decode($jsonData); 
Cuestiones relacionadas