49

When I use following URL in browser then it prompt me to download a text file with JSOn content.

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

(Click above URL see downloaded file content)

Now I want to create a php page. I want that when I call this php page, it should call above URL and get content(json format) from file and show it on screen.

How can I do this ??

T.Todua
  • 53,146
  • 19
  • 236
  • 237
Awan
  • 18,096
  • 36
  • 89
  • 131

5 Answers5

92

Depending on your PHP configuration, this may be a easy as using:

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

However, if allow_url_fopen isn't enabled on your system, you could read the data via CURL as follows:

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

Incidentally, if you just want the raw JSON data, then simply remove the json_decode.

John Parker
  • 54,048
  • 11
  • 129
  • 129
  • 1
    Thank you voted up :) edit: I tried without json_decode and got a fully rendered url but with decode, nothing. What is the purpose of decode? –  Mar 27 '18 at 22:50
  • 1
    @Steven It decodes JSON string into a PHP variable. – John Parker Mar 31 '18 at 09:37
  • @John_Parker many thanks. I'm currently using Google to render a snapshot of a url but it's not ideal as the image is small but with JSON decode as a PHP variable, is this an array I can split and grab things like a page title and the first image? Cheers. –  Apr 01 '18 at 06:20
  • 1
    From PHP 5.1.3, BINARYTRANSFER option has no effect: the raw output will always be returned when CURLOPT_RETURNTRANSFER is used. https://www.php.net/manual/en/function.curl-setopt.php – Nadav Jan 03 '21 at 10:41
25

1) local simplest methods

<?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) Better Way is CURL:

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

It automatically handles FOLLOWLOCATION problem + Remote urls:
src="./imageblabla.png" turned into:
src="http://example.com/path/imageblabla.png"

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

T.Todua
  • 53,146
  • 19
  • 236
  • 237
4

Don't forget: to get HTTPS contents, your OPENSSL extension should be enabled in your php.ini. (how to get contents of site use HTTPS)

Community
  • 1
  • 1
Dr D
  • 131
  • 1
  • 1
3

Use file_get_contents in combination with json_decode and echo.

Josh Crozier
  • 233,099
  • 56
  • 391
  • 304
cweiske
  • 30,033
  • 14
  • 133
  • 194
  • I am using file_get_contents to get Content but it is not JSON when I echo it. It is showing some special characters. – Awan Apr 02 '11 at 10:44
  • @Awan were you ever able to figure this out? I'm also seeing special characters. – jewel Aug 02 '13 at 00:34
2
$url = "https://chart.googleapis....";
$json = file_get_contents($url);

Now you can either echo the $json variable, if you just want to display the output, or you can decode it, and do something with it, like so:

$data = json_decode($json);
var_dump($data);
Steve Mayne
  • 22,285
  • 4
  • 49
  • 49