Я пишу приложение командной строки в PHP, которое принимает путь к локальному входному файлу в качестве аргумента. Входной файл будет содержать одну из следующих функций:
- закодированный ассоциативный массив JSON
- A
serialized()версия ассоциативного массива - Базовая 64-кодированная версия ассоциативного массива
serialized() - кодированный закодированный ассоциативный массив JSON с кодировкой Base 64
- Простой старый ассоциативный массив PHP
- Мусор
Короче говоря, существует несколько несходных программ, которые я не могу контролировать, которые будут писать в этот файл, единообразным способом, который я могу понять, когда я действительно выясню формат. Как только я выясню, как глотать данные, я могу просто запустить с ним.
Я рассматриваю следующее:
- Если первый байт файла
{, попробуйтеjson_decode(), посмотрите, не сработает ли он. - Если первый байт файла
<или$, попробуйтеinclude(), посмотрите, не сработает ли он. - если первые три байта файла совпадают с: [0-9], попробуйте
unserialize(). - Если не первые три, попробуйте
base64_decode(), посмотрите, не сработает ли он. Если не:- Еще раз проверьте первые байты декодированных данных.
- Если все это терпит неудачу, это мусор.
Это просто кажется довольно дорогостоящим для довольно простой задачи. Могу ли я сделать это лучше? Если да, то как?