从URL获取文件内容?

问题描述 投票:0回答:5

当我在浏览器中使用以下 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 file-get-contents
5个回答
93
投票

根据您的 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
即可。


24
投票

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


4
投票

不要忘记:要获取 HTTPS 内容,应在 php.ini 中启用 OPENSSL 扩展。 (如何使用HTTPS获取网站内容)


3
投票

file_get_contents
json_decode
echo
结合使用。


2
投票
$url = "https://chart.googleapis....";
$json = file_get_contents($url);

现在,如果您只想显示输出,则可以回显 $json 变量,或者可以对其进行解码,并对其执行某些操作,如下所示:

$data = json_decode($json);
var_dump($data);
© www.soinside.com 2019 - 2024. All rights reserved.