Heim >Backend-Entwicklung >PHP-Tutorial >问一下这个JS数据如何解码,

问一下这个JS数据如何解码,

WBOY
WBOYOriginal
2016-06-23 14:24:59868Durchsuche

问一下这个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>


你如果要php请求这个链接,就把callback参数去掉

$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] => 
        )

    [crumb] => Array
        (
            [marketInfo] => Array
                (
                    [displayName] => 所有市场
                    [marketHref] => http://list.taobao.com/cat-0.htm
                )

            [catPathList] => Array
                (
                )

        )

    [keyword] => Array
        (
            [key] => q
            [value] => ps
        )

    [sort2List] => 
    [promotion] => Array
.....

需要解码吗?我直接打开就看到数据了啊

jsonp145(你要的数据内容)括号内就是啊

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn