2011-10-29 107 views
2

我已經寫了一個通用的文件系統查看器在PHP中,我想添加上下文高亮。 Geshi看起來不錯,但似乎需要我以我想突出顯示代碼的語言發送。從字符串確定腳本語言

有關如何根據內容和/或位置確定給定文件的腳本語言的任何現有方法?

我從MIME類型:

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

,讓我知道它的文本,至少(我允許非文本的下載太)。

我在想,解析砰線/文件擴展名或尋找像PHP這樣的簡單標籤會讓我有很多東西像perl/shell scripts/php。

我也有文件的路徑,因爲這些文件是直接從源服務器傳出的,所以基於路徑的規則可能適用於像/etc/httpd/conf.d/*,/ etc/passwd這樣的東西。

完美的準確性並不是一個真正的問題,因爲我會允許用戶覆蓋用於語法的語言。我只是想提供一個低開銷的教育猜測,從頭開始寫這個。

另一個警告。其中一些文件可能大於150MB,因此我只想讀取文件的一部分,但如果需要的話,我可以關閉大文件的此功能。

+0

爲什麼你不看文件的擴展名? – str

回答

1

如果您可以調用外部程序,請嘗試使用Linux file命令。

+0

是的,我可以。這讓我感到興奮的線條解析。好的開始。 –

+0

你知道我已經解僱了'文件'的能力,只不過是什麼樣的MIME類型會給我,但是,我只是測試這個,它很好。其實..無法檢測perl腳本作爲perl在Windows安裝的FS。 –

+0

錯誤識別的perl腳本是否以爆炸線開始? –

0

我很驚訝沒有人指示我從谷歌代碼prettify.js。它可能會做我需要的一切,客戶端。