У меня есть 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
и он работает нормально.