Одна из функций, которую я использую практически в каждом своём проекте, где нужен PHP - определение расширения файла из привольной строки с его именем. Код этой функции следующий:
//у функции один параметр - произвольное имя файла, можно с полным путём function getFileExt($filename) { //получаем информацию о файле в ассоциативный массив $path_info = pathinfo($filename); //если информация есть if(isset($path_info)){ //возвращаем расширение в строчном формате: txt, doc, png и т.п. return strtolower($path_info['extension']); }else{ //иначе возвращаем пустую строку, или что-то своё return ""; } }
Проведём тестирование нашей функции на реальных примерах:
print getFileExt("fiLe.eXT");
От имени файла fiLe.eXT
вернётся ext
print getFileExt("dir/file.ext");
От имени файла с произвольным путём dir/file.ext
вернётся ext
print getFileExt("file");
От имени файла без расширения file
вернётся пустая строка
print getFileExt("root/dir.dir/file.ext");
От имени файла в пути к которому тоже есть точки root/dir.dir/file.ext
вернётся ext
print getFileExt("/dir.dir/file");
От имени файла в пути к которому тоже есть точки, а сам файл без расширения /dir.dir/file
вернётся пустая строка
Заключение:
Как видим, наша функция успешно обрабатывает все возможные варианты переданных параметров. Конечно, это не единственная реализация алгоритма для выделения расширения из имени файла, существуют ещё и другие варианты, ознакомиться с которыми можно здесь.