当我在浏览器中使用以下 URL 时,它会提示我下载包含 JSOn 内容的文本文件。
https://chart.googleapis.com/chart?cht=p3&chs=250x100&chd=t:60,40&chl=Hello|World&chof=json
(点击上面网址即可查看下载的文件内容)
现在我想创建一个 php 页面。我希望当我调用这个 php 页面时,它应该调用上面的 URL 并从文件中获取内容(json 格式)并将其显示在屏幕上。
我该怎么做??
根据您的 PHP 配置,这可能很容易使用:
$url = 'https://chart.googleapis.com/chart?cht=p3&chs=250x100&chd=t:60,40&chl=Hello|World&chof=json'
$content = file_get_contents($url);
然后就可以处理加载的数据了。例如,JSON:
$jsonData = json_decode($content);
但是,如果您的系统未启用
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
即可。
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 问题 + 远程网址:
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
不要忘记:要获取 HTTPS 内容,应在 php.ini 中启用 OPENSSL 扩展。 (如何使用HTTPS获取网站内容)
将
file_get_contents
与 json_decode
和 echo
结合使用。
$url = "https://chart.googleapis....";
$json = file_get_contents($url);
现在,如果您只想显示输出,则可以回显 $json 变量,或者可以对其进行解码,并对其执行某些操作,如下所示:
$data = json_decode($json);
var_dump($data);