当前位置:首页 > PHP > 正文内容

php jsonp转json,php jsonp转数组,php jsonp转对象

高老师6年前 (2019-09-27)PHP2122

将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);
}

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/106.html

分享给朋友:

“php jsonp转json,php jsonp转数组,php jsonp转对象” 的相关文章

php 地址转换经纬度

php 地址转换经纬度

//$ak开发密钥,$cityname城市名称(支持省县乡详细地址) public  function   getposition($ak,$cityname){ $callback=array('lng'=>0,'l...

 php xml字符串转数组,phpxml转数组,php 将xml转换成数组

php xml字符串转数组,phpxml转数组,php 将xml转换成数组

001源码:/*  * $xml_str是xml字符串  */ function  xmltoarray($xml_str) { //禁止XML实体扩展攻击 libxml_disable_entity_loader(true); //拒绝包含...

php数组合并 array_merge和+号的区别

php数组合并 array_merge和+号的区别

array_merge是最常用的数组合并方法,+号同样也可以,但是却有很大不同。array_merge遇到相同字符串key,后面数组的key会覆盖前面数组的key,+号正好相反。$a = [ 'one' => 'A on...

pcntl_signal(): Error assigning signal

pcntl_signal(): Error assigning signal

当我想在一个进程中监听kill 和 kill -9命令报了这个错误。//监听kill pcntl_signal(SIGTERM, function () {     posix_kill(0, SIGTERM); });...

php mcrypt扩展被废弃的解决方案

php mcrypt扩展被废弃的解决方案

使用openssl扩展对应替换mcrypt的函数,(比较麻烦,但是openssl是未来趋势)在新版php中编译mcrypt扩展使用一个纯php代码实现的mcrypt扩展库,git地址为https://github.com/phpseclib/mcrypt_compat,每个mcrypt的方法都已经实...