搜索 |
把不是用:串联,健值都没有双引号的非正式JSON转成正规的JSON或者字符串
$jsonstr='{
xiaoxie=刘涛,
KK5= ,
HTWZ=[
{ KK2= W,KK3=0},
{ KK2=W,1,KK3="20},
{
KK2="<p>我是富文本,带了引号</p>",
KK3=<p style=\"color:red\">我是富文本,带了样式及转义
<p style=\"color:red\">我是富文本,带了样式及转义</p></p>
}],
xx=B,
HTTK=[
{KK7=质:量,要\"求, KK8="我们"有,引号}
],
KK9=芜湖市
}';
$jsonstr=preg_replace("/(\r|\t|\n)/", "",$jsonstr); //去除特殊的符号换行等
$jsonstr=preg_replace("/([^\\\\])\"/U", "$1\\\\\"",$jsonstr); //没有转义的先转义
$js1=preg_replace("/((,|\{)\s*)(\w+)=/U", "$1\"$3\":", $jsonstr); //给健添加双引号
// ($1)(?=$2)找$2前面的$1
$js1=preg_replace("/(\"\w+\":)([^\[].*)(?=(,\s*\"\w+\":|\}))/U", "$1\"$2\"", $js1); //给值加上双引号
// $js1=preg_replace("/(\"+\\\\\"+)|(\\\\\"+\"+)/U", "\"", $js1); //需要转义回去就打开
dump(json_decode($js1,true));