ホームページ >バックエンド開発 >PHPチュートリアル >この JS データをデコードする方法を尋ねると、

この JS データをデコードする方法を尋ねると、

WBOY
WBOYオリジナル
2016-06-23 14:24:59867ブラウズ

この JS データをデコードする方法を尋ねてください。

データ アドレス: http://list.taabao.com/itemlist/default.htm?_input_charset=utf-8&json=on&cat=0&style=grid&pcat=food2011&q=ps&rr=1&spm=a2106。 m5221.1000187.1&commend=all&pSize=95&_ksTS=1382516137021_144&callback=jsonp145


まず、phpのjson_decodeは使えません


ディスカッションへの返信(解決策)

明らかに、jsonp (および以下) を削除するだけです。 json_decode を使用してください

だめです。やってみた

具体的にやってみたけど、なぜうまくいかないのか!

具体的に試してみたけど、なぜうまくいかないのですか?

エンコードは失敗します。以前にこれに遭遇した方法は、JS を使用して PHP に送信することでした。

次に、PHP でデコードして配列に復元したいのですが、どうすればよいですか?

これを試してみてください
$str ='{ "status": { "code": "200" , "url": "" }、これと同様にして、括弧と最初の数文字を削除してください

$str ='json数据'; $web=json_decode($str);$arr=json_to_array($web);print_r($arr);function json_to_array($web){$arr=array();foreach($web as $k=>$w){if(is_object($w)) $arr[$k]=json_to_array($w);  //判断类型是不是object   else $arr[$k]=$w;}    return $arr;}

これは、JavaScript によって呼び出される jsonp です。Baidu でリクエストするか、自分で作成します
原則として、URL のコールバック パラメーターは、事前に定義したい関数名です

<!DOCTYPE html><html><head><meta charset=utf-8 /><title>JS Bin</title></head><body>  <script type='text/javascript'>    function jsonp145(data){      alert(data.status.code);//200    }  </script>  <script src='http://list.taobao.com/itemlist/default.htm?_input_charset=utf-8&json=on&cat=0&style=grid&pcat=food2011&q=ps&rr=1&spm=a2106.m5221.1000187.1&commend=all&pSize=95&_ksTS=1382516137021_144&callback=jsonp145'></script></body></html>


必要に応じて、php がこのリンクをリクエストするときに、コールバック パラメーターを削除します

$url = 'http://list.taobao.com/itemlist/default.htm?_input_charset=utf-8&json=on&cat=0&style=grid&pcat=food2011&q=ps&rr=1&spm=a2106.m5221.1000187.1&commend=all&pSize=95&_ksTS=1382516137021_144&callback=jsonp145';$s = file_get_contents($url);preg_match('/{.+}/s', $s, $r); //他返回的是js函数,所以需要脱括号$o = json_decode(iconv('gbk', 'utf-8', $r[0]), true);//他的数据是gbk的,但json_decode只能处理utf-8的函数print_r($o);
Array
(
[status] => Array
(
[code] => 200
) [url] =>

)

[クラム] => ; catPathList] =>
[プロモーション] => 配列
.....

jsonp14 を直接開くとデータが表示されますか? 5 (データご希望のコンテンツ) は括弧内です

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。