Как исправить дефектную строку JSON? - PullRequest
0 голосов
/ 02 июня 2019

Мне нужно знать, что это за формат данных и какой процесс я использую, чтобы получить данные из псевдонима. Я получил эти данные из $ _REQUEST:

{id:10,Username:gab@gmail.com,nickname:gabe}

Вот пример формата JSON. имеет кавычки:

$json = '
{
    "type": "donut",
    "name": "Cake"
}';

Тогда вы можете просто вызвать тип, поместив строки:

$yummy = json_decode($json);

echo $yummy->type; //donut

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 02 июня 2019

Это строка, в которой мы можем использовать выражение с 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 визуализирует регулярные выражения:

enter image description here

...