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