Я написал общий просмотрщик файловой системы на 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 МБ, поэтому я хотел бы прочитать только часть файла, хотя я мог бы просто отключить эту функцию для больших файлов, если это необходимо.