Итак, у меня есть то, что кажется довольно простой проблемой, хотя для жизни меня с отсутствием знаний о кодировании я не могу понять это. Извините всех неверных! Таким образом, у меня есть URL-адрес на страницу, содержащую подписанный запрос с строкой JSON (это страница на Facebook). Мне нужно получить эту строку JSON, а затем извлечь из нее только определенную часть. На данный момент я не могу контролировать форматирование URL.Извлечение определенного значения из строки JSON с помощью PHP
На странице, что она идет на меня есть следующий код:
<?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']; prints: {q: "id_src = abc123456789",}
Для меня это строка JSON, поэтому я подумал, что могу запустить json_decode на этом, а затем распечатать id_src = abc123456789. Я пробовал так:
$appdata = $obj['app_data'];
$idcode = json_decode($appdata,true);
Вслед за эхо $ IDCODE [ «д»], но это только печатает один фигурную скобку. Я пробовал различные варианты, удаление «меток», удаление истины и т. Д.
Моя конечная цель - просто извлечь значение abc123456789, а не часть id_src. Я подумал, что, скорее всего, быстрее спросить, потому что я вряд ли смогу это выяснить в ближайшие дни.
Спасибо за помощь!
EDIT: Добавлен фрагмент $ 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
Отредактировано, добавлен фрагмент – Dave