Определить язык сценариев из строки - PullRequest
2 голосов
/ 29 октября 2011

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

Существуют ли какие-либо методы определения языка сценариев для данного файла по содержимому и / или расположению?

У меня есть тип MIME от:

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

Это позволяет мне знать, по крайней мере, это текст (я также разрешаю скачивать не текст).

Я думаю, что синтаксический анализ строки / расширения файла bang или поиск простых тегов, таких как php, поможет мне разобраться с такими вещами, как perl / shell scripts / php.

У меня также есть путь к файлу, так как эти файлы поступают непосредственно с исходных серверов, поэтому правила на основе пути могут работать для таких вещей, как /etc/httpd/conf.d/*, /etc/passwd.

Совершенная точность на самом деле не проблема, так как я позволю пользователю переопределить язык, используемый для синтаксиса. Я просто хочу дать низкое обоснованное предположение, чтобы начать без написания этого с нуля.

Еще одна оговорка. Некоторые из этих файлов могут иметь размер> 150 МБ, поэтому я хотел бы прочитать только часть файла, хотя я мог бы просто отключить эту функцию для больших файлов, если это необходимо.

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Если вы можете вызвать внешнюю программу, попробуйте команду Linux file .

0 голосов
/ 29 октября 2011

Я удивлен, что никто не указал мне на prettify.js из кода Google.Он, вероятно, сделает все, что мне нужно, на стороне клиента.

...