2012-04-04 32 views
1

私は非常に単純な問題であるように見えますが、コーディング知識が不足している私の人生のために、私はそれを理解できません。間違った言い方を許してください!だから、JSON文字列で署名されたリクエスト(Facebookページ)を含むページへのURL見出しがあります。その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に']をエコー; print:{q: "id_src = abc123456789"、}

私自身、それはJSON文字列なので、json_decodeを実行してからid_src = abc123456789を印刷することができたと思いました。

$appdata = $obj['app_data']; 
$idcode = json_decode($appdata,true); 
エコー$のIDCODE [「Q」]に続い

、それだけで一つの中括弧を出力します。私はこのようなことを試してみました。私は様々なバリエーション、マークの除去、真の除去などを試みました。私の最終的な目標は、id_srcではなく、abc123456789の値を抽出することです。私は次の数日でそれを理解することはまずないので、おそらくちょうど尋ねるほうが早いと考えました。

ヘルプありがとうございました!

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値の後にコンマが入りますか?

+0

あなたは 'BASE64_DECODE()'それの後に返されるJSONのスニペットを投稿することができますに? JSONがフェッチ中のどこかで壊れている可能性がありますが、スニペットがないとわからないことがあります。 – Bojangles

+0

編集されたスニペットが追加されました – Dave

答えて

2

をお試しください:

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

print_r($matches); // Array ([0] => "id_src=abc123456789" [1] => abc123456789) 
+0

私のヒーロー!ありがとう、print_r($ matches [1])は私が望むものを正確に印刷します。 – Dave

+0

それがあなたを助けたら答えを賞賛します:D –

0

{q:"id_src=abc123456789",}は有効なJSONではありません。あなたはこのように欲しいものを抽出することができます{"q":"id_src=abc123456789"}

+0

Hmmmは、json_decode関数が出力するものです。これは、iFrameに渡されたsigned_requestのデコードに由来します。これは、app_dataがURLに追加される方法にエラーがあることを意味する可能性があります - id_src値をそのまま引き出す方法はありますか? – Dave

関連する問題