2011-07-06 8 views
10

私はこのようなURLからいくつかのJSONデータを取得しようとしている:file_get_contents()とCURLの対応は?

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

クライアントのウェブホストは、それゆえ上記のコードは動作しません、無効に設定allow_url_fopenを持っているが。

上記の行と同等のコードは何ですか?基本的には、検索語句は$_GETでURLに提出する必要があります。

+0

私が原因のほぼ_identical_回答数にこれを保護します。皆さん、既存の回答を追加する前に、既存の回答を投票することを検討してください。 curlを使用してURLをフェッチする方法の5つのほとんど同じ例があります。 –

+1

@ティムポストはそれを考慮します。これまでに質問に答えた人はすべて> 10名で、これまでのすべての回答は、質問がされてから数分以内に与えられました。したがって、私は保護が必要とは思わない。私は自分の答えを削除しただろう(私は最初ではなかった)が、エラー処理を含む唯一のようであり、これを書いている時点で最高の投票者である。 – phihag

+0

@phihag私はこれが(フロントページにかなりの時間を費やしたために)これ以上の見解を描くことに懸念を抱いていました。重複した回答をたくさん出す質問は、多くの場合、評判を得ることを試みている新しいユーザーのために、多くのフラグを描く傾向があります。私はリストが成長し続けていないことを確認していた:)いずれにせよ、今は保護されていない。 –

答えて

6

$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

必要なものはすべてここにあります。

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

基本的には、この

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

のようなものを試してみてくださいあなたはこのようにそれをチェックアウトしていますか。?

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; 
} 

ありがとう。

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); 

あなたはその後、$データ内のファイルの内容を持っている必要があり、あなたはおそらくチェックのいくつかのエラーをしたいだろうが、あなたは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); 
関連する問題