从字符串确定脚本语言

从字符串确定脚本语言

问题描述:

我已经写了一个通用的文件系统查看器在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

如果您可以调用外部程序,请尝试使用Linux file命令。

+0

是的,我可以。这让我感到兴奋的线条解析。好的开始。 –

+0

你知道我已经解雇了'文件'的能力,只不过是什么样的MIME类型会给我,但是,我只是测试这个,它很好。其实..无法检测perl脚本作为perl在Windows安装的FS。 –

+0

错误识别的perl脚本是否以爆炸线开始? –

我很惊讶没有人指示我从谷歌代码prettify.js。它可能会做我需要的一切,客户端。