json不怎么熟,比如调用这个接口http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.40624058825688&y=39.90789300648029&callback=callback获得返回的数据是这样的callback&&callback({"error":0,"x":"MTE2LjQxMjYxOTYwMDc1","y":"MzkuOTE0MjIxMTQyNDM3"})
想得到x,y后面的加密数据,注意坐标比较多,需要批量
最好写个示例啊,JSONcallbackAPI百度

解决方案 »

  1.   

    $url = 'http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.40624058825688&y=39.90789300648029&callback=callback';
    $s = file_get_contents($url);
    strtok($s, '(');
    $t = json_decode(strtok(')'), 1);
    $t['x'] = base64_decode($t['x']);
    $t['y'] = base64_decode($t['y']);
    print_r($t);
    Array
    (
        [error] => 0
        [x] => 116.41261960075
        [y] => 39.914221142437
    )
      

  2.   

    print_r( json_decode('{"error":0,"x":"MTE2LjQxMjYxOTYwMDc1","y":"MzkuOTE0MjIxMTQyNDM3"}',true));
    Array
    (
        [error] => 0
        [x] => MTE2LjQxMjYxOTYwMDc1
        [y] => MzkuOTE0MjIxMTQyNDM3
    )x,y后面的值是base64 加密的
      

  3.   

    因为我这个坐标比较多,我想直接批量根据api接口得到返回的加密json数据,不是把已经得到的放进去根据函数格式成数组啊,不知道你明白没哟啊
      

  4.   

    真的谢谢了,就是还有个问题,因为我是foreach动态把数组里的x跟y放进http://api....?from=2&to=4&x={$x}&y={$y}&callback=callback';跟我返回一个错误Fatal error: Maximum execution time of 30 seconds exceeded in 【file_get_contents】。好像它有请求限制,一次50个,还是一秒转换30个,怎么让它每循环30或50次,停顿1秒,sleep
      

  5.   

    你这是 php 超时了
    执行一下 set_time_limit(0);
      

  6.   

    不好意思,ok了,原来发现索引不是连续的,我一开始以为要用什么xmlHttprequest,getjson什么的,对了$t = json_decode(strtok(')'), 1)里面的参数1是什么意思啊,我知道是得到()里面的数据
      

  7.   

    json_decode 的第二个参数是指示是否对象也用数组返回,默认不是