Как я могу определить, является ли файл текстовым с использованием PHP? - PullRequest
4 голосов
/ 08 сентября 2010

Я создаю поисковую систему для нашей гигантской кодовой базы PHP.

Учитывая путь к файлу, как я могу с некоторой степенью уверенности определить, является ли файл текстовым файлом или другим типом? Я бы предпочел не прибегать к расширениям файлов (например, substr($filename, -3) или что-то глупое), так как это файловая система на основе Linux, поэтому все, что касается расширений файлов.

Я использую RecursiveDirectoryIterator, поэтому у меня тоже есть эти методы ..

Ответы [ 4 ]

10 голосов
/ 08 сентября 2010

Попробуйте функцию finfo_file().

Вот блог, описывающий ее использование: Интеллектуальное определение типа файла с использованием PHP

1 голос
/ 08 сентября 2010
if (mime_content_type($path) == "text/plain") {
 echo "I'm a text file";
}
0 голосов
/ 08 сентября 2010

Попробуйте использовать: string mime_content_type ( string $filename )

Надеюсь, что это полезно.

Уильям Чой

0 голосов
/ 08 сентября 2010

Вы можете вызвать утилиту file:

echo `file '$file'`;

Возвращает такие вещи, как:

$ file test.out
test.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

$ file test.cpp
test.cpp: ASCII C program text

$ file test.txt
test.txt: ASCII text

$ file test.php
test.php: PHP script text
...