composer.json
{
require: {
"etconsilium/php-json-fix": "*"
}
}
Скрипт чинит некоторые известные проблемы:
- пустые значения
- забытые запятые в конце массивов
- спецсимволы вроде \x0
- в качестве бонуса удаляет js-style комментарии
- @TODO: требуется обработка кавычек: как замена одиночных на двойные, так и закавычивание голых данных
Сразу раскрою секрет: всё это во имя вселенской справедливости и удобной работы с конфигами.
Но, чтобы не возиться с обёртками данных каждый раз, используется жёсткий хак с подменой стандартных функции PHP через runkit. Так как APD
и runkit
являются библиотеками pecl
, и при этом не имеют работающих пакетов для акутальных версий языка, рункит собирается из исходников. Детали установки см. composer.json
& pre-install.sh
. Проверено на Debian8 + PHP5.6.2-cli.
Источники вдохновения перечислены в коде.
enjoy! :)
ps: считаю излишним писать объектный интерфейс, ибо тысячи их, или функции вроде json_fix()
и json_restore()
, ибо вы либо ставите пакет и юзаете хак везде, либо нет.