您的位置:首页 > 编程语言 > PHP开发

php中Json字符串key加引号

2017-11-07 09:32 323 查看


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

以上代码,已经过本人亲自验证,请放心使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php json 正则表达式