2017-02-20 10 views
1

に私は私が唯一path_typeをしたいデコード無効なJSONをPHP

json_decode($myjson, true) 

を解読しようとしています場合、これはnullを返します。この

USER SAVED IN DB.{"user":{"_token":"9ylCAviuuCaNlCtXNya5pEXkY8vkJepZAohsG5VI","submit":"engageiq_post_data","affiliate_id":"","campaign_id":"","offer_id":"","s1":"","s2":"","s3":"","s4":"","s5":"","address":"","phone1":"","phone2":"","phone3":"","phone":"","source_url":"http:\/\/pfr_laravel.dev\/registration","ip":"192.168.10.1","screen_view":"1","first_name":"fff","last_name":"ff","email":"[email protected]","zip":"00501","birthdate":"","dobmonth":"04","dobday":"12","dobyear":"1965","gender":"M","chk_agree":"","submitBtn":"Submit","state":"NY","city":"Holtsville","revenue_tracker_id":1},"revenue_tracker_id":1,"path_type":2,"campaigns":[[1,15,25,48,38,23,44],[245],[249],[27,4,19,181,18],[16],[246],[51,52,151],[10],[26,2,185,180,45,184,182]],"creatives":[]} 

のように見え、外部ソースからの無効なJSONのリターンを持っていますキーとその値

は、だから私のコードで私はこの

if (path_type == 2){} 
が必要になります

アイデアをお探しですか?

+0

はDB._に保存されたこの_USERがあることになっていますか? – MrDarkLynx

+0

はい。私はそれがnullの原因だと思うnull –

+0

それはその後、有効なJSONではありません。あなたは '{" user ":' ...で始める必要があります。... – MrDarkLynx

答えて

0

まず、不要な文字列をJSONから削除する必要があります。
そして、あなたが変数にデコードされたJSONを保管し、パスの種類をチェックしたい:私はこの正規表現を使用すると思いMrDarkLynxの答え@上の拡大

$myjson = substr($myjson, 17); // remove bulk from JSON 

$data = json_decode($myjson, true); 

if ($data['path_type'] == 2) { 
    // code 
} 
1

^(.+?){"user" 使用{"user"前に、すべてを削除するにはregexで、最初に取得したグループのみを削除してください。

あなたは今、あなたが使用できる有効なJSONを持っています=)

+0

これはもっと良い解決策だと思うが、今のところ私はMrDarkLynxの答えを使っている。 –