Как определить тип MIME текстовых файлов: CSS, Javascript, ini, sql?

обнаружение типа MIME файла с PHP тривиально - просто используйте PEAR's MIME_Type пакет, PHP FileInfo на или позвоните file -i на машине Unix. Это очень хорошо работает для двоичных файлов и всех других, которые имеют какие-то "волшебные байты", через которые их можно легко обнаружить.

то, что я не в состоянии обнаружить правильный тип MIME текстовых файлов:

  • в CSS
  • Diff
  • INI (конфигурация)
  • в JavaScript
  • первый
  • среда SQL

все они идентифицируются как" text/plain", что правильно, но слишком неопределенно для меня. Мне нужен реальный тип, даже если он стоит некоторое время для анализа содержимого файла.

Итак, мой вопрос:какие решения существуют для обнаружения типа MIME таких текстовых файлов? Каких-Либо Библиотек? Фрагменты кода?


обратите внимание, что у меня нет ни имени, ни файл расширение, но у меня есть содержимое файла.


Если бы я использовал ruby, я мог бы интегрировать гитхаб это лингвист. Ohloh это ohcount написан на C, но имеет инструмент командной строки для определения типа: ohcount -d $file

что я пробовал

ohcount

обнаруживает xml и php файлы правильно, все остальные нет.

Apache tika

обнаруживает xml и html, все остальные файлы тестов рассматривались только как text/plain.

4 ответов


Я думаю магические обнаружения от Apache Tika может помочь вам:

http://tika.apache.org/


как :

  • .ini чтобы проверить ini-файлы, вы будете использовать parse_ini_file

Так как я не нашел подходящую библиотеку, я написал свой собственный магия файл, который правильно обнаруживает все мои тестовые файлы.

мое приложение сначала пробует мой пользовательский магический файл для обнаружения и возвращается к обычному/системному магическому файлу, если тип не обнаружен.

код его на github, см. https://github.com/cweiske/MIME_Type_PlainDetect . Волшебный файл находится в данных/программирования.магия!--9--> и может использоваться с file -f programming.magic /path/to/source


Я нашел эту библиотеку:http://pear.php.net/package/MIME_Type/

в соответствии с его описанием он " предоставляет функциональность для работы с типами MIME."и дает следующие особенности:

  • синтаксический анализ типа MIME.
  • поддерживает полную спецификацию RFC2045.
  • многие функции утилиты для работы с и определения информации о типах.
  • большинство функций можно вызвать статически.
  • автоопределение a MIME-тип файла, либо с расширением fileinfo, расширением mime_magic, командой "file" или встроенным списком отображения