所以我有一個看起來很簡單的問題,儘管對於我而言,由於缺乏編碼知識,我無法弄清楚。請原諒任何錯誤的人!所以我有一個URL標題,它包含一個帶有JSON字符串的簽名請求(這是一個Facebook頁面)。我需要檢索該JSON字符串,然後只提取它的特定部分。目前我無法控制URL的格式。用PHP從JSON字符串中提取特定值
在它去,我有以下的代碼頁:
<?php
$signed_request = $_REQUEST['signed_request']; // Get the POST signed_request variable.
if(isset($signed_request)) // Determine if signed_request is blank.
{
$pre = explode('.',$signed_request); // Get the part of the signed_request we need.
$json = base64_decode($pre['1']); // Base64 Decode signed_request making it JSON.
$obj = json_decode($json,true); // Split the JSON into arrays.
echo $obj['app_data'];
}
else
{
die('No signed request avaliable.'); //If there is no signed_request, stop processing script.
}
?>
這工作正常,並且回聲$的obj [ 'app_data文件'];打印:{q:「id_src = abc123456789」,}
對我來說,這本身就是一個JSON字符串,所以我想我可以運行一個json_decode然後打印出id_src = abc123456789。我想,這樣的:
$appdata = $obj['app_data'];
$idcode = json_decode($appdata,true);
其次回聲$ IDCODE [「Q」],但只是打印一個大括號。我嘗試了各種變化,刪除''標記,刪除真實等。
我的最終目標是提取abc123456789值,而不是id_src部分。我想這可能會更快,因爲我不太可能在接下來的幾天中發現它。
感謝您的幫助!
編輯:添加了$ json的片段。 echo $ json;打印以下內容
{"algorithm":"HMAC-SHA256","app_data":"{q:\"id_src=abc123456789\",}","issued_at":1333500860,"page":{"id":"380641958713853","liked":false,"admin":true},"user":{"country":"nz","locale":"en_GB","age":{"min":21}}}
是否會導致問題的id_src值後的逗號?
你能後您發表返回的JSON的片段'BASE64_DECODE()'呢?有可能你的JSON在獲取它的過程中被破壞了,但是我們無法確切知道沒有它的一小部分。 – Bojangles 2012-04-04 00:46:51
已編輯,添加了片段 – Dave 2012-04-04 00:56:20