所以我遇到了一个看起来很简单的问题,尽管在我缺乏编码知识的情况下,我无法解决这个问题。请原谅任何用词不当!所以我有一个 URL 标题指向一个页面,其中包含一个带有 JSON 字符串的签名请求(它是一个 Facebook 页面)。我需要检索该 JSON 字符串,然后仅提取其中的特定部分。我目前无法控制 URL 的格式。
在它转到的页面上,我有以下代码:
<?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.
}
?>
效果很好,并且 echo $obj['app_data']; 打印:{q:"id_src=abc123456789",}
对我来说,它本身就是一个 JSON 字符串,所以我想我可以在上面运行一个 json_decode,然后打印出 id_src=abc123456789。我试过这样:
$appdata = $obj['app_data'];
$idcode = json_decode($appdata,true);
后跟 echo $idcode['q'],但这只是打印一个大括号。我尝试了各种变体,去除 ' ' 标记,去除 true 等。
我的最终目标是只提取 abc123456789 值,而不是 id_src 部分。我想问可能会更快,因为我不太可能在接下来的几天内弄清楚。
感谢大家的帮助!
编辑:添加了 $json 的片段。回声 $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 值后面的逗号导致问题?