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

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

高老师7年前 (2019-09-27)PHP2139

将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 session和cookie的关联

PHP session和cookie的关联

先看看下面的代码:<?php session_start(); $_SESSION['username']='lucy'; ?>当我们请求访问上面的脚本,默认会在我们的客户端生成一个名为PHPSESSID的cookie,我这里的值是PHPSESSID=...

pcntl_signal(): Error assigning signal

pcntl_signal(): Error assigning signal

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

PHP Warning:  ftok(): Project identifier is invalid

PHP Warning: ftok(): Project identifier is invalid

在使用ftok生成ipc进程通信key尝试将第二个参数项目标识符传入字符串报错:PHP Warning:  ftok(): Project identifier is invalid,查阅资料发现第二个字符串只能是1个字符串,长度为1....

 php命令行中文乱码,php cli中文乱码

php命令行中文乱码,php cli中文乱码

<?php //如果支持exec函数,可以使用的方式 exec('chcp 65001'); //如果exec函数因安全问题禁用,可以使用的方式 pclose(popen('chcp 65001', 'r'));...

php elasticsearch基础使用

php elasticsearch基础使用

elasticsearch的操作都是基于http协议的,已经有现成的php类库,composer安装即可。{     "require": {        &...

windows安装php event扩展问题

windows安装php event扩展问题

php event扩展在windows中依赖于php_sockets扩展,因此在php.ini中必须先加载php sockets扩展,如下。extension=sockets extension=event...