У меня есть файл под названием 94bf663a100e848fb599209af8cdc2b5.wmv. Я знаю, что pathinfo
не даст мне расширение, если я просто использую имя 94bf663a100e848fb599209af8cdc2b5. Я считаю, что glob
предназначен только для проверки наличия файла. Так можно ли получить расширение файла, просто зная имя файла (94bf663a100e848fb599209af8cdc2b5)?
Как показывает пример на странице справочника php glob , glob
не просто проверяет, существует ли файл, он возвращает каждый файл, соответствующий выражению.
Ниже приведена модификация примера на этой странице для ваших нужд:
$name = "94bf663a100e848fb599209af8cdc2b5"; $matching = glob($name . ".*"); $info = pathinfo($matching[0]); $ext = $info['extension'];
Это предполагает, что есть один (и только один) файл с этим именем (с любым расширением), но вы должны иметь возможность его модифицировать, если файл может не существовать, или может быть несколько файлов с тем же именем и разными расширениями.
Функция 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);
Первые несколько символов файла (двоичные) обычно дают вам какой-то намек на тип файла.
Попробуйте, открыв в «Блокноте» несколько бинарных файлов (rar, zip, mp3 и т. Д.).
Попробуйте функцию mime_content_type()
filetype()
или mime_content_type()
в php … передать путь к файлу, который возвращает тип файла.