2016-03-28 66 views
0

我使用cURL查詢Minecraft服務器,以便顯示有關服務器的某些信息。不能使用cURL返回的數據?

代碼:

$url = URL . '/api.php'; 
$params= 'case=getinfo'; 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$gameinfo = curl_exec($ch); 

var_dump($gameinfo); 

如果我傾倒返回的數據,我得到:

echo $gameinfo["hostname"]; 
echo $gameinfo->hostname; 
echo $gameinfo[0]["hostname"]; 
echo $gameinfo[0]->hostname; 
using foreach($gameinfo as $info) 

爲:

string(264) """{"hostname":"A Minecraft Server","gametype":"SMP","game_id":"MINECRAFT","version":"1.9","plugins":"CraftBukkit on Bukkit 1.9-R0.1-SNAPSHOT: PlayerData 1.0","map":"world","numplayers":"0","maxplayers":"200","hostport":"25565","hostip":"192.168.1.20","players":[]}" 

我已經使用在以下幾個方面的數據試過那些我或者得到非法字符串或非對象

那麼我該如何使用?

+0

你不需要json_decode($ gameinfo);在你讀之前? – Sephedo

+0

我也試過,沒有工作。它將整個事情變爲空。 –

+0

你得到的字符串不是來自curl的對象,所以你需要先讓它成爲一個對象,然後才能訪問鍵值對。 – scrappedcola

回答

0

看起來您的迴應是JSON,您需要先使用PHP解碼,然後再將其用作數組。同時修剪報價

$gameinfo = curl_exec($ch); 
$gameinfo = json_decode(trim($gameinfo, '"'), true); 

var_dump($gameinfo);