Php 如何修复有缺陷的JSON字符串?
我需要知道这是什么数据格式,以及我使用什么过程从“昵称”获取数据。我从$u请求中获得了以下数据:Php 如何修复有缺陷的JSON字符串?,php,json,regex,string,regex-negation,Php,Json,Regex,String,Regex Negation,我需要知道这是什么数据格式,以及我使用什么过程从“昵称”获取数据。我从$u请求中获得了以下数据: {id:10,Username:gab@gmail.com,nickname:gabe} 下面是一个JSON格式的示例。它有引号: $json = ' { "type": "donut", "name": "Cake" }'; 然后,您可以通过放置以下行来调用类型: $yummy = json_decode($json); echo $yummy->type; //don
{id:10,Username:gab@gmail.com,nickname:gabe}
下面是一个JSON格式的示例。它有引号:
$json = '
{
"type": "donut",
"name": "Cake"
}';
然后,您可以通过放置以下行来调用类型:
$yummy = json_decode($json);
echo $yummy->type; //donut
如何解决这个问题?这是一个字符串,我们可以使用带有
preg\u match\u all
和json的表达式:
$re = '/([^{}]+?):([^{}]+?),|([^{}]+):([^{}]+)/m';
$str = '{id:10,Username:gab@gmail.com,nickname:gabe}';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
$json_str = '{';
foreach ($matches as $value) {
if (!$value[3] && !$value[4]) {
$json_str .= '"' . $value[1] . '":"' . $value[2] . '",';
} else {
$json_str .= '"' . $value[3] . '":"' . $value[4] . '"';
}
}
$json_str .= '}';
var_dump(json_decode($json_str, true));
输出
正则表达式电路 可视化正则表达式:
它似乎应该是json,但不管是谁实现了它,都把事情搞砸了。与提出该请求的人交谈,告诉他们不要使用自己的json,因为他们做得不对。@Franzgleichman感谢您的帮助!你在这一点上是正确的。
{"id":"10","Username":"gab@gmail.com","nickname":"gabe"}
array(3) {
["id"]=>
string(2) "10"
["Username"]=>
string(13) "gab@gmail.com"
["nickname"]=>
string(4) "gabe"
}