所以我有一个看起来很简单的问题,尽管对于我而言,由于缺乏编码知识,我无法弄清楚。请原谅任何错误的人!所以我有一个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