Как читать очищенный литерал объекта JavaScript (с ключами без кавычек) & quot; как JSON & quot; в PHP?

У меня есть объект json, вырезанный с веб-сайта

{
area: {
"lang": "en",
"area": "25",
"region": "mea"},
config: {
"rtl": false,
"breakpoint": 768
}
}

из-за сезона площадь а также конфиг не заключён в двойные кавычки json_decode Возвращает NULL

как добавить двойные кавычки в php площадь а также конфиг если они еще не заключены в двойные кавычки?

0

Решение

Используйте регулярное выражение замены (при условии формата).

$json = preg_replace('/([^"\s]+)+: ?{/', '"$1": {', $js_object);

Regex101.com

PHP Sandbox

Для предоставленной строки вам нужно проверить еще две вещи:

  • Убедитесь, что шаблон не находится в строке (например, "Your selection: {packageName}")
  • Убедитесь, что символ обратной косой черты экранирован (Источник)

Вот обновленный код:

$js_object = '...';

$json_proper_backslashes = preg_replace('#\\\\([^"\\\\\/bfnrtu])#', '\\\\\\\\$1', $js_object);

$json = preg_replace('/({|},)\s*([^"\s]+): ?{/', '$1"$2": {', $json_proper_backslashes);

$json_object = json_decode($json);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector