将jsonp转为PHP数组和对象。
/**
* jsonp转数组|Jsonp转json
* @param string $jsonp jsonp字符串
* @param bool $assoc true转数组 false转对象
* @return array|ArrayObject|null
*/
function jsonp_decode($jsonp, $assoc = false)
{
$pattern = '/\((.*)\)/s';
if (preg_match($pattern, $jsonp, $matches))
{
if (!empty($matches['1']))
{
return json_decode($matches['1'], $assoc);
}
return null;
}
return null;
}使用实例:
//jsonp字符串 $jsonp = 'callbackFunction(["customername1","customername2"])'; //jsonp转数组 $jsonp_result = jsonp_decode($jsonp,true); var_dump($jsonp_result);
转换结果:
array(2) {
[0]=>
string(13) "customername1"
[1]=>
string(13) "customername2"
}也可以试试下面的这个方法,宇润写的,我没有测试:
/**
* 把jsonp转为php数组
* @param string $jsonp jsonp字符串
* @param boolean $assoc 当该参数为true时,将返回array而非object
* @return array
*/
function jsonp_decode($jsonp, $assoc = false)
{
$jsonp = trim($jsonp);
if(isset($jsonp[0]) && $jsonp[0] !== '[' && $jsonp[0] !== '{') {
$begin = strpos($jsonp, '(');
if(false !== $begin)
{
$end = strrpos($jsonp, ')');
if(false !== $end)
{
$jsonp = substr($jsonp, $begin + 1, $end - $begin - 1);
}
}
}
return json_decode($jsonp, $assoc);
} //$ak开发密钥,$cityname城市名称(支持省县乡详细地址) public function getposition($ak,$cityname){ $callback=array('lng'=>0,'l...
001源码:/* * $xml_str是xml字符串 */ function xmltoarray($xml_str) { //禁止XML实体扩展攻击 libxml_disable_entity_loader(true); //拒绝包含...
array_merge是最常用的数组合并方法,+号同样也可以,但是却有很大不同。array_merge遇到相同字符串key,后面数组的key会覆盖前面数组的key,+号正好相反。$a = [ 'one' => 'A on...
当我想在一个进程中监听kill 和 kill -9命令报了这个错误。//监听kill pcntl_signal(SIGTERM, function () { posix_kill(0, SIGTERM); });...
使用openssl扩展对应替换mcrypt的函数,(比较麻烦,但是openssl是未来趋势)在新版php中编译mcrypt扩展使用一个纯php代码实现的mcrypt扩展库,git地址为https://github.com/phpseclib/mcrypt_compat,每个mcrypt的方法都已经实...