ProfiPHPProfiPHP
Категория: Полезное в PHP

Получить расширение файла в PHP

В данной статье я расскажу очень простые способы, как можно получить расширение файла средствами PHP. Опишу все подробно. Для начала заносим название файла в переменную:
$filename = 'example.jpg';
Далее нам поможет функция Explode с помощью которой разбиваем строку на подстроки.
$getMime = explode( '.', $filename );
В качестве разделителя используется символ точки (.), То есть символ разделения названия файла от его расширения.

Последнее что нужно, это взять последний элемент массива. В этом нам поможет функция End:
$mime = end( $getMime )
Вот и все, теперь в переменной $mime содержаться значение расширения файла.

Эту операцию можно осуществлять с помощью функции:
function getExtension( $filename ) {
return end( explode( '.', $filename ) );
}
Начиная с версии PHP 5 разработчики PHP усилили требования к коду. В частности, это касается работы функций, принимающих в качестве аргументов - ссылки на переменные, массивы и т.п. Поэтому данная функция может вывести ошибку:
Strict Standards: Only variables should be passed by reference in file.php on line …
Причина ошибка является в передаче на вход функций, требующих указателя на переменную, результата выполнения другой функции.

В данном случае мы видим как результат работы функции Explode передается непосредственно как параметр в функцию End. Но функция End работает с указателем на массив, а не со значением массива.

Для решения необходимо сперва перенести значение в временную переменную, и только потом передаем в End указатель на эту переменную.
function getExtension( $filename ) {
$temp = explode( '.', $filename );
return end( $temp );
}
Собственно все ошибки подобного рода решаются именно таким образом. Если в вашей программе где-то стала вылетать вышеуказанная ошибка, то просто создавайте временную переменную.

Таким же способом можно получить расширения файла, но вместо функции End используется функция Array_pop:
function getExtension( $filename ) {
$temp = explode( '.', $filename );
return array_pop( $temp );
}
Функция Array_pop удаляет элемент в конце массива, то есть не только возвращает последнее значение массива. На одну операцию выполняется более чем с функцией End, но разница настолько маленькая, что на это даже не стоит акцентировать внимание.

Выполнить поиск расширения можно используя вместе функцию Substr и функцию Strrpos:
echo substr( $filename, strrpos( $filename, '.' ) + 1 );
Чтобы избавиться самой точки в полученном подстроке, увеличиваем начало старта на одно смещение вправо (1).

Существует еще один способ:
echo substr( strrchr( $filename, '.' ), 1 );
Работает следующим образом: функция Strrchr возвращает участок строки, следующей за указанным параметром, после чего Substr отрезает первый символ - точку.

Существует также функция Pathinfo, с помощью которой можно получить расширение файла. По моему мнению, это лучший вариант. Для этого выполняем простой код:
echo pathinfo( $filename, PATHINFO_EXTENSION );
Здесь описаны простые способы получения расширение файла, но помните, это только для ознакомления, или даже для демонстрации возможностей языка PHP. На самом деле, вам самим решать, каким образом использовать для различных случаев возможен особый подход.

Добавить комментарий

Имя:
Текст комментария: