php中Json字符串key加引号

php中Json字符串key加引号

  在php中,有时会遇到json字符串的key值没有加引号的情况,需要增加引号,否则json_decode()函数不能正确解析。网上的文章,做法大多是使用正则表达式替换,但是如果json的value中也含有冒号,则大多数文章的添加引号用法是错误的。 
  笔者参考网上的文章,自己进行了整理和测试,正确的代码如下:

    //json中的Key增加上引号.
    function json_replace_key($str) 
    {
        /*  //该版本没有办法解决value中带时分秒之间的冒号问题
        if(preg_match('/\w:/', $str))
            $str = preg_replace('/(\w+):/is', '"$1":', $str);

        return $str;
        */
        $str = trim( $str );
        $str = ltrim( $str, '(' );
        $str = rtrim( $str, ')' );
        $a = preg_split('#(?<!\\\\)\"#', $str );
        for( $i=0; $i < count( $a ); $i+=2 )
        {
            $s = $a[$i];
            $s = preg_replace('#([^\s\{\}\:\,]+):#', '"\1":', $s );
            $a[$i] = $s;
        }
        return implode( '"', $a );
    }

以上代码,已经过本人亲自验证,请放心使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值