8

PHPを使用してファイルのMIMEタイプを検出するのは簡単です。つまり、PEARのMIME_Typeパッケージ、PHPのfileinfofile -iを使用するか、Unixマシンで呼び出します。これは、バイナリファイルや、簡単に検出できるある種の「マジックバイト」を持つ他のすべてのファイルで非常にうまく機能します。

私が失敗しているのは、プレーンテキストファイルの正しいMIMEタイプを検出することです。

  • CSS
  • 差分
  • INI(構成)
  • Javascript
  • rST
  • SQL

それらはすべて「テキスト/プレーン」として識別されます。これは正しいですが、私にはあまりにも具体的ではありません。ファイルの内容を分析するのに時間がかかる場合でも、実際のタイプが必要です。

だから私の質問:そのようなプレーンテキストファイルのMIMEタイプを検出するためにどのソリューションが存在しますか?図書館はありますか?コードスニペット?


私はファイル名もファイル拡張子も持っていませんが、ファイルの内容は持っていることに注意してください。


rubyを使用すれば、githubの言語学者を統合できます。OhlohのohcountはCで記述されていますが、タイプを検出するためのコマンドラインツールがあります。ohcount -d $file

私が試したこと

オーカウント

xmlファイルとphpファイルを正しく検出しますが、それ以外はすべて検出しません。

Apache tika

xmlとhtmlを検出し、他のすべてのテストファイルはとしてのみ表示されましtext/plainた。

4

4 に答える 4

3

適切なライブラリが見つからなかったので、すべてのテスト ファイルを適切に検出する独自のマジックファイルを作成しました。

私のアプリケーションは、最初にカスタム マジック ファイルを検出しようとし、タイプが検出されない場合は、通常の/システム マジック ファイルにフォールバックします。

コードは github で、https://github.com/cweiske/MIME_Type_PlainDetectを参照してください。マジック ファイルはdata/programming.magicにあり、file -f programming.magic /path/to/source

于 2012-05-25T11:02:34.643 に答える
2

方法 :

  • .ini iniファイルを確認するには、parse_ini_file関数を使用します。iniファイルが間違っている場合はfalseを返します。
  • .css最初に、そのようなものbody {html {または 。を見つけたかどうかを確認しますbody, html {。、、などfont-familyのCSSのキーワードを試すこともできます。backgroundborder
  • .sql、、、INSERT INTOなどUPDATE (.*) SETのようなものが見つかる可能性がありますCREATE TABLE。ここでもキーワードを探します。
  • .js Javascriptの場合、キーワードのすべてを再度解析する必要があります...

他の人にとっては、私は彼らを知りません。

于 2012-05-08T20:06:18.480 に答える
2

Apache Tika からの魔法の検出が役立つと思います。

http://tika.apache.org/

于 2012-05-08T19:28:31.830 に答える