1

ですから、私には非常に単純な問題のように見えるものがありますが、コーディングの知識が不足している私の人生では、それを理解することはできません。誤称を許してください!そのため、JSON文字列を含む署名付きリクエストを含むページ(Facebookページ)に向かうURLがあります。その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']が続きますが、これは1つの中括弧を出力するだけです。いろいろなバリエーション、''マークの削除、trueの削除などを試しました。

私の最終目標は、id_src部分ではなく、abc123456789値を抽出することです。次の数日でそれを理解する可能性が低いので、私はただ尋ねる方がおそらく速いと思いました。

すべての助けをありがとう!

編集:$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値の後のコンマでしょうか?

4

2 に答える 2

2

あなたはこのようにあなたが望むものを抽出することができます:

preg_match('/"\\w+?=(\\w+?)"/', $obj['app_data'], $matches);

print_r($matches); // Array ( [0] => "id_src=abc123456789" [1] => abc123456789 )
于 2012-04-04T00:56:26.193 に答える
0

{q:"id_src=abc123456789",}有効なJSONではありません。試す{"q":"id_src=abc123456789"}

于 2012-04-04T00:46:53.980 に答える