问一下这个JS数据如何解码,
数据地址: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
先声明,用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;}
这是jsonp,给你javascript调用的 ,用jquery的jsonp方式请求,自己百度吧,或者自己写一个
原理就是url里面callback参数是你预先要定义的函数名
<!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>
$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
需要解码吗?我直接打开就看到数据了啊
jsonp145(你要的数据内容)括号内就是啊