Получить объект JSON из URL-адреса

У меня есть URL-адрес, который возвращает объект JSON следующим образом:

{ "expires_in":5180976, "access_token":"AQXzQgKTpTSjs-qiBh30aMgm3_Kb53oIf-VA733BpAogVE5jpz3jujU65WJ1XXSvVm1xr2LslGLLCWTNV5Kd_8J1YUx26axkt1E-vsOdvUAgMFH1VJwtclAXdaxRxk5UtmCWeISB6rx6NtvDt7yohnaarpBJjHWMsWYtpNn6nD87n0syud0" } 

Я хочу получить значение access_token . Итак, как я могу получить его через PHP?

 $json = file_get_contents('url_here'); $obj = json_decode($json); echo $obj->access_token; 

Чтобы это работало, file_get_contents требует, чтобы allow_url_fopen был включен. Это можно сделать во время выполнения, включив:

 ini_set("allow_url_fopen", 1); 

Вы также можете использовать curl чтобы получить URL-адрес. Чтобы использовать завиток, вы можете использовать приведенный здесь пример:

 $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, 'url_here'); $result = curl_exec($ch); curl_close($ch); $obj = json_decode($result); echo $obj->access_token; 
 $url = 'http://.../.../yoururl/...'; $obj = json_decode(file_get_contents($url), true); echo $obj['access_token']; 

Php также может использовать свойства с тире:

 garex@ustimenko ~/src/ekapusta/deploy $ psysh Psy Shell v0.4.4 (PHP 5.5.3-1ubuntu2.6 — cli) by Justin Hileman >>> $q = new stdClass; => <stdClass #000000005f2b81c80000000076756fef> {} >>> $q->{'qwert-y'} = 123 => 123 >>> var_dump($q); class stdClass#174 (1) { public $qwert-y => int(123) } => null 

Вы можете использовать функцию json_decode PHP:

 $url = "http://urlToYourJsonFile.com"; $json = file_get_contents($url); $json_data = json_decode($json, true); echo "My token: ". $json_data["access_token"]; 

Вам нужно прочитать о функции json_decode http://php.net/manual/en/function.json-decode.php

Ну вот

 $json = '{"expires_in":5180976,"access_token":"AQXzQgKTpTSjs-qiBh30aMgm3_Kb53oIf-VA733BpAogVE5jpz3jujU65WJ1XXSvVm1xr2LslGLLCWTNV5Kd_8J1YUx26axkt1E-vsOdvUAgMFH1VJwtclAXdaxRxk5UtmCWeISB6rx6NtvDt7yohnaarpBJjHWMsWYtpNn6nD87n0syud0"}'; //OR $json = file_get_contents('http://someurl.dev/...'); $obj = json_decode($json); var_dump($obj-> access_token); //OR $arr = json_decode($json, true); var_dump($arr['access_token']); 
 // Get the string from the URL $json = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452'); // Decode the JSON string into an object $obj = json_decode($json); // In the case of this input, do key and array lookups to get the values var_dump($obj->results[0]->formatted_address); 
 $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, 'url_here'); $result = curl_exec($ch); curl_close($ch); $obj = json_decode($result); echo $obj->access_token; 

file_get_contents() не извлекает данные из url, тогда я попытался curl и он работает нормально.