Как получить расширение файла - PHP
Коллеги всем привет.
В сегодняшней статье мы поговорим о том как можно в PHP определить расширения файла.
У вас в разработке очень часто будет возникать задача получения расширения файла например при загрузке файла на сервер. При сохранении файла на сервере есть так же очень частая задача сохранять файл не с исходным именем, а указать в качестве имени файла уникальное значения чтобы имя файла не совпадало с другими файлами на сервере.
Для решения этой задачи существует очень много разных вариантов, и я вам их покажу. В качестве примеров я буду показывать все действия на трех файлах, первый файл это будет файла с расширениям .txt, второй будет изображения с расширениям .png и третий вариант тоже будет изображения, но с расширениям .jpeg.
Для удобства я буду использовать переменные в которых будут находиться имена файлов с которыми мы будем работать и получаться их расширения. Еще я создал функцию под названием get_file_extension, в неё я буду помещать код, который будет выводить расширения файла в консоль.
В первом варианте получения расширения файла мы будем использовать функции mb_strtolower, mb_substr. Функция mb_strtolower принимает в качестве параметра строку и переводит все символы этой строки в нижний регистр. Вторая функция mb_substr принимает тоже строку и возвращает часть строки.
php> mb_strtolower(mb_substr(mb_strrchr($file_name, '.'), 1));
Второй вариант это использовать функцию pathinfo. Функция pathinfo возвращает информацию о файле в виде массива такую как filename, basename, extension, dirname. Нам вся эта информация сейчас не важна, мы хотим получить только расширения, для этого мы вторым параметром можем передать специальный флаг PATHINFO_EXTENSION которые указывает на то чтобы нам функция вернула только расширения файла в виде строки, а не всю информацию в виде массива.
php> pathinfo($file_name, PATHINFO_EXTENSION);
Следующий вариант получения расширения файла это использовать функции array_pop и explode.
php> array_pop(explode('.', $file_name));
Сначала функция explode разбивает строку на массив по разделителю, в данном случаи разделись у нас это точка, и после функция array_pop возвращает последний элемент из этого массива, а последний элемент массива это как раз наше расширения.
Следующим вариантом для получения расширения файла мы будем использовать класс SplFileInfo. Класс SplFileInfo имеет много разных методом по предоставлении разной информации о файле, нам нужно использовать один из его методов который называется getExtension.
php> $info = new SplFileInfo($file_name);
php> $info->getExtension();
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.