web-dev-qa-db-ja.com

URLからファイルコンテンツを取得しますか?

ブラウザで次のURLを使用すると、JSonコンテンツを含むテキストファイルをダウンロードするように求められます。

https://chart.googleapis.com/chart?cht=p3&chs=250x100&chd=t:60,40&chl=Hello|World&chof=json

(上記のURLをクリックして、ダウンロードしたファイルのコンテンツを参照)

ここで、PHPページを作成します。このphpページを呼び出すときに、上記のURLを呼び出してファイルからコンテンツ(json形式)を取得し、画面に表示する必要があります。

これどうやってするの ??

31
Awan

PHP設定によって異なりますが、これはmayを使用するのと同じくらい簡単です:

$jsonData = json_decode(file_get_contents('https://chart.googleapis.com/chart?cht=p3&chs=250x100&chd=t:60,40&chl=Hello|World&chof=json'));

ただし、allow_url_fopenがシステムで有効になっていないため、次のようにCURLを介してデータを読み取ることができます。

<?php
    $curlSession = curl_init();
    curl_setopt($curlSession, CURLOPT_URL, 'https://chart.googleapis.com/chart?cht=p3&chs=250x100&chd=t:60,40&chl=Hello|World&chof=json');
    curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);

    $jsonData = json_decode(curl_exec($curlSession));
    curl_close($curlSession);
?>

ちなみに、生のJSONデータだけが必要な場合は、json_decode

71
John Parker

1)ローカルな最も簡単な方法

<?php
echo readfile("http://example.com/");   //needs "Allow_url_include" enabled
//OR
echo include("http://example.com/");    //needs "Allow_url_include" enabled
//OR
echo file_get_contents("http://example.com/");
//OR
echo stream_get_contents(fopen('http://example.com/', "rb")); //you may use "r" instead of "rb"  //needs "Allow_url_fopen" enabled
?> 

2)より良い方法はCURL

echo get_remote_data('http://example.com'); // GET request 
echo get_remote_data('http://example.com', "var2=something&var3=blabla" ); // POST request

[〜#〜] followlocation [〜#〜]問題+リモートURLを自動的に処理します。
src="./imageblabla.png" になって:
src="http://example.com/path/imageblabla.png"

コード: https://github.com/tazotodua/useful-php-scripts/blob/master/get-remote-url-content-data.php

18
T.Todua

忘れないでください:HTTPSコンテンツを取得するには、php.iniでOPENSSL拡張機能を有効にする必要があります。 ( HTTPSを使用してサイトのコンテンツを取得する方法

4
Dr D

つかいます file_get_contentsと組み合わせてjson_decodeおよびecho

3
cweiske
$url = "https://chart.googleapis....";
$json = file_get_contents($url);

出力を表示するだけの場合は、$ json変数をエコーするか、デコードしてから何かを実行できます。

$data = json_decode($json);
var_dump($data);
2
Steve Mayne