Можно ли получить расширение файла, не зная об этом? - PullRequest
10 голосов
/ 07 июля 2011

У меня есть файл с именем 94bf663a100e848fb599209af8cdc2b5.wmv.Я знаю, что pathinfo не даст мне расширение, если я просто использую имя 94bf663a100e848fb599209af8cdc2b5.Я считаю, glob только для проверки, существует ли файл.Так возможно ли получить расширение файла, просто зная имя файла (94bf663a100e848fb599209af8cdc2b5)?

Ответы [ 4 ]

13 голосов
/ 07 июля 2011

Как показывает пример на странице руководства php glob , glob делает не , просто проверяет, существует ли файл, он возвращает каждый файл, который соответствует выражению.

Вот модификация примера на этой странице для ваших нужд:

$name = "94bf663a100e848fb599209af8cdc2b5";
$matching = glob($name . ".*");

$info = pathinfo($matching[0]);
$ext = $info['extension'];

Предполагается, что существует один (и только один) файл с таким именем (с любым расширением ), но вы можете изменить его, если файл может не существовать или может быть несколько файлов. с тем же именем и разными расширениями.

1 голос
/ 07 июля 2011

Функция finfo_file() будет проверять байтовую подпись файла, чтобы вернуть его mimetype. Оттуда вы в основном можете определить правильное расширение файла.

// Adapted from the PHP docs
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
echo finfo_file($finfo, $filename);
finfo_close($finfo);
0 голосов
/ 07 июля 2011

Попробуйте filetype() или mime_content_type() функцию в php ... передать путь к файлу, который возвращает тип файла.

0 голосов
/ 07 июля 2011

Первые несколько символов файла (двоичного) обычно дают подсказку о типе файла.

Попробуйте, открыв некоторые двоичные файлы (rar, zip, mp3 и т. Д.) в блокноте.

...