Это строка, в которой мы можем использовать выражение с preg_match_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));
Выходы
{"id":"10","Username":"gab@gmail.com","nickname":"gabe"}
array(3) {
["id"]=>
string(2) "10"
["Username"]=>
string(13) "gab@gmail.com"
["nickname"]=>
string(4) "gabe"
}
Схема RegEx
jex.im визуализирует регулярные выражения: