Определить тип данных из file_get_contents ()

Я пишу приложение командной строки в PHP, которое принимает путь к локальному входному файлу в качестве аргумента. Входной файл будет содержать одну из следующих вещей:

  • Кодированный ассоциативный массив JSON
  • serialized() версия ассоциативного массива
  • Базовая 64-кодированная версия serialized() ассоциативного массива
  • Базовый 64-кодированный ассоциативный массив JSON
  • Простой старый ассоциативный массив PHP
  • белиберда

Короче говоря, существует несколько разнородных программ, в которых я не могу контролировать этот процесс, и я буду писать в этот файл единообразным образом, как только смогу понять формат. Как только я выясню, как глотать данные, я могу просто работать с ним.

Я рассматриваю следующее:

  • Если первый байт файла { , попробуйте json_decode() , json_decode() , не сработает ли он.
  • Если первый байт файла равен < или $ , попробуйте include() , посмотрите, не сработает ли он.
  • если первые три байта файла совпадают с: [0-9], попробуйте unserialize() .
  • Если не первые три, попробуйте base64_decode() , посмотрите, не сработает ли он. Если не:
    • Еще раз проверьте первые байты декодированных данных.
    • Если все это не удастся, это мусор.

Это просто кажется довольно дорогим для довольно простой задачи. Могу ли я сделать это лучше? Если да, то как?

Solutions Collecting From Web of "Определить тип данных из file_get_contents ()"