2011-10-29 10 views
2

PHPで一般的なファイルシステムビューアを作成しましたが、コンテキストの強調表示を追加したいと思います。 Geshiこれにはうまく見えますが、私はコードを強調したい言語で送信する必要があります。文字列からスクリプト言語を決定する

コンテンツや場所によって特定のファイルのスクリプト言語を特定する方法に関する既存の方法はありますか?私はそれが、少なくとも(私はあまりにも非テキストのダウンロードが可能)テキストだ知ることができます

$finfo = finfo_open(FILEINFO_MIME_TYPE); 
$mime_type = @finfo_file($finfo, $full_path); 

私はからMIMEタイプを持っています。

私は、bang行/ファイル拡張子を解析したり、PHPのような単純なタグを探していると、perl/shell scripts/phpのようなものの良いチャンクを得ることができると考えています。

また、これらのファイルはソースサーバーから直接送られてくるので、パスベースのルールは/etc/httpd/conf.d/*、/ etc/passwdのように動作する可能性があります。

構文に使用する言語をユーザーが上書きできるようにするため、完全な精度は問題にはなりません。私はちょうどこれを最初から書かずに始めるために、低いオーバヘッドで教育された推測を提供したいと思う。

他に1つの警告があります。これらのファイルの中には150MB以上のものがありますので、必要に応じて大きなファイルに対してこの機能をオフにすることもできますが、ファイルの一部だけを読みたいと思います。

+0

なぜファイルの拡張子を見ないのですか? – str

答えて

1

外部プログラムを呼び出すことができる場合は、Linux fileコマンドを試してください。

+0

はいできます。それは私にバングライン解析を与える。よいスタート。 –

+0

あなたは私が「ファイル」の能力を私に与えてくれるMIMEタイプ以外の何ものでもなく、私はちょうどこれをテストしました。実際には、Windows上にperlスクリプトを検出することができません。 –

+0

誤って識別されたperlスクリプトがbang行で始まっていますか? –

0

私は誰もGoogleのコードからprettify.jsを指摘して驚いています。それはおそらく私がそれを必要とするすべてを、クライアント側で行うでしょう。

関連する問題