Когда я использую следующий URL-адрес в браузере, он предлагает мне загрузить текстовый файл с содержимым JSOn.
https://chart.googleapis.com/chart?cht=p3&chs=250×100&chd=t:60,40&chl=Hello|World&chof=json
(Нажмите выше URL см. Содержимое загруженного файла)
Теперь я хочу создать php-страницу. Я хочу, чтобы, когда я вызываю эту страницу php, он должен вызывать выше URL-адреса и получать контент (формат json) из файла и показывать его на экране.
Как я могу это сделать ??
В зависимости от вашей конфигурации PHP это может быть легко использовать:
$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
.
Отмеченный вопрос как дубликат: get url content PHP
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 //See Updates and explanation at: https://github.com/tazotodua/useful-php-scripts/ function get_remote_data($url, $post_paramtrs=false) { $c = curl_init(); curl_setopt($c, CURLOPT_URL, $url); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); if($post_paramtrs) { curl_setopt($c, CURLOPT_POST,TRUE); curl_setopt($c, CURLOPT_POSTFIELDS, "var1=bla&".$post_paramtrs ); } curl_setopt($c, CURLOPT_SSL_VERIFYHOST,false); curl_setopt($c, CURLOPT_SSL_VERIFYPEER,false); curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0"); curl_setopt($c, CURLOPT_COOKIE, 'CookieName1=Value;'); curl_setopt($c, CURLOPT_MAXREDIRS, 10); $follow_allowed= ( ini_get('open_basedir') || ini_get('safe_mode')) ? false:true; if ($follow_allowed) { curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); } curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 9); curl_setopt($c, CURLOPT_REFERER, $url); curl_setopt($c, CURLOPT_TIMEOUT, 60); curl_setopt($c, CURLOPT_AUTOREFERER, true); curl_setopt($c, CURLOPT_ENCODING, 'gzip,deflate'); $data=curl_exec($c); $status=curl_getinfo($c); curl_close($c); preg_match('/(http(|s)):\/\/(.*?)\/(.*\/|)/si', $status['url'],$link); $data=preg_replace('/(src|href|action)=(\'|\")((?!(http|https|javascript:|\/\/|\/)).*?)(\'|\")/si','$1=$2'.$link[0].'$3$4$5', $data); $data=preg_replace('/(src|href|action)=(\'|\")((?!(http|https|javascript:|\/\/)).*?)(\'|\")/si','$1=$2'.$link[1].'://'.$link[3].'$3$4$5', $data); if($status['http_code']==200) { return $data; } elseif($status['http_code']==301 || $status['http_code']==302) { if (!$follow_allowed) { if (!empty($status['redirect_url'])) { $redirURL=$status['redirect_url']; } else { preg_match('/href\=\"(.*?)\"/si',$data,$m); if (!empty($m[1])) { $redirURL=$m[1]; } } if(!empty($redirURL)) { return call_user_func( __FUNCTION__, $redirURL, $post_paramtrs); } } } return "ERRORCODE22 with $url!!<br/>Last status codes<b/>:".json_encode($status)."<br/><br/>Last data got<br/>:$data"; }
УВЕДОМЛЕНИЕ: он автоматически передает проблему FOLLOWLOCATION + Удаленные URL-адреса автоматически корректируются! (src = "./ imageblabla.png" ——–> src = "http://example.com/path/imageblabla.png"😉
pson GNU / Linux, вам может потребоваться установить пакет php5-curl
для его использования.
Не забывайте: для получения содержимого HTTPS расширение OPENSSL должно быть включено в вашем php.ini. ( как получить содержимое сайта HTTPS )
Используйте file_get_contents
в сочетании с json_decode
и echo
.
$url = "https://chart.googleapis...."; $json = file_get_contents($url);
Теперь вы можете либо откликнуть переменную $ json, если вы просто хотите отобразить вывод, или можете его декодировать, и сделать что-то с ним, например:
$data = json_decode($json); var_dump($data);