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

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

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

将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使用fsockopen抓取网页,自定义请求头

PHP使用fsockopen抓取网页,自定义请求头

通过该函数可以获取指定端口的页面源码,还能设置超时时间、自定义数据包,fsockopen 也很强大,但是比较偏底层。可以自定义设置header头信息,强大至极。$socket=fsockopen('www.jd88.net','80',$errno,$errstr,3...

 php文件锁解决高并发

php文件锁解决高并发

前面的文章对于高并发下单商品导致商品库存为负值的问题请先阅读再阅读本篇文章一定对您有帮助,建议亲手测试较好。加上文件锁后的下单处理代码:【一】.阻塞模式:(如果其他进程已经加锁文件,当前进程会一直等其他进程解锁文件后继续执行)<?php //连接数据库 $con=mysqli_connect(...

php迭代器学习

php迭代器学习

php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...

php  RabbitMQ消息队列

php RabbitMQ消息队列

(1).config.php 配置文件<?php /**  * RabbitMQ_Config  */ $config = [     'host' => ...

【二】PHP多进程学习-进程信号管理

【二】PHP多进程学习-进程信号管理

(1).学习目标:    了解常见信号类型(百度PHP支持的信号类型),(2).相关函数学习:    (2.1).pcntl_signal函数用于设置一个信号管理器接收进程信号,参数1:信号类型,参数2:回调函数,用于在接收到参数1类型的信...

cookie跨域,cookie p3p跨域

cookie跨域,cookie p3p跨域

最近在公司开发一个新的项目假设项目域名是a.com,需要接入b.com的单点登陆系统。(1).首先我们会在a.com的登陆页面用iframe引入b.com来显示登陆界面,实际上登陆验证操作都是在b.com上面(2).当b.com验证通过,会在前端ajax请求a.com的回调地址,这个回调地址目的就是...