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

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

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

将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验证码不显示的终极解决方案

PHP验证码不显示的问题应该是经常的事情,我在这里把2种解决方案都发出来方便大家后期使用.因为是昨天晚上自己写验证码都没有显示,我就直接把之前和李炎恢老师上课写的验证码拿来还是不显示,醉了。首先是第一种方法:1、打开服务器安装目录下的php.ini文件;2、去掉;extension=php_gd.d...

 php header属性,php header 详解,php header的作用

php header属性,php header 详解,php header的作用

header() 函数向客户端发送原始的 HTTP 报头。(官方解释)通俗的讲header函数将参数中的字符串作为服务端的响应头来返回给客户端。什么是服务端的响应头?打开谷歌浏览器看看network中的请求response header信息即可。更多的参数百度response header即可浏览器...

php trait的使用

php trait的使用

PHP不像net支持多继承,自身只支持单继承,为了解决这个问题,php出了Trait这个特性,减少单继承语言的限制。并且能让代码复用率更高。说白了就是一个对象的属性和方法扩展工具一样。例如:trait exts {     public f...

php  while  true  cpu占用100%

php while true cpu占用100%

在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) {     pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...

php定义常量数组

php定义常量数组

<?php //php7+ define('CONFIG', [     'MYSQL' => '127.0.0.1',     ...

php下载远程文件(支持断点续传,支持超大文件)

php下载远程文件(支持断点续传,支持超大文件)

断点下载的原理:http请求头添加Range参数告诉文件服务器端需要的字节范围例如1个文本文件的字节为1000,第一次请求Range: bytes=0-500第二次请求Range: bytes=501-1000通过每次的请求将返回的流追加写入到文件。注意的项目:断点下载服务器端的每次只返回字节传输的...