php jsonp字符串格式化decode函数

后端开发PHP 721

和json_decode函数类似的功能,只是此函数针对jsonp字符串

function jsonp_decode($jsonp, $assoc = false) { // PHP 5.3 adds depth as third parameter to json_decode
    if($jsonp[0] !== '[' && $jsonp[0] !== '{') { // we have JSONP
       $jsonp = substr($jsonp, strpos($jsonp, '('));
    }
    return json_decode(trim($jsonp,'();'), $assoc);
}

另外也可以使用正则表达式提取出 callback(json); 中的json字符串:

preg_match("/[a-z]+\((.*)\)/", $str, $t);
var_dump($t[1]);
var_dump(json_decode($t[1], true));

另外需要注意的是,如果json字符串中有未含引号的字符会出问题的,在javascript中可以使用JSON.stringify()函数来转换.

Post Comment