SplFileInfo::getExtension
Возвращает строку ( string ), содержащую расширение файла, или пустую строку ( string ), если у файла нет расширения.
Примеры
Пример #1 Пример использования SplFileInfo::getExtension()
$info = new SplFileInfo ( ‘foo.txt’ );
var_dump ( $info -> getExtension ());
$info = new SplFileInfo ( ‘photo.jpg’ );
var_dump ( $info -> getExtension ());
$info = new SplFileInfo ( ‘something.tar.gz’ );
var_dump ( $info -> getExtension ());
Результат выполнения данного примера:
string(3) "txt" string(3) "jpg" string(2) "gz"
Примечания
Замечание:
Другой способ для получения расширения — использование функции pathinfo() .
$extension = pathinfo ( $info -> getFilename (), PATHINFO_EXTENSION );
?>?php
Смотрите также
- SplFileInfo::getFilename() — Получает имя файла
- SplFileInfo::getBasename() — Получает базовое имя файла
- pathinfo() — Возвращает информацию о пути к файлу
User Contributed Notes
There are no user contributed notes for this page.
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Как определить расширение файла в PHP
Задача определения расширения возникает в разработке достаточно часто – здесь и загрузка файлов на сервер, и анализ имеющихся файлов, и поиск файла. В работе с файлами на сервере, есть так же частое решение сохранения файла не с исходным именем, а назначение в качестве имени файла текущего значения TIMESTAMP сервера. Решений у этой задачи существует немало для разных языков программирования. Хотя некоторые решения, в первую очередь, приходящие на ум, иногда приходится дорабатывать из-за того разнообразия имен файлов которые только могут быть. Для файла с именем «myfile.txt» можно смело предложить разбить строку на части разделенные точкой и взять последнюю. Но что делать с файлами «my.file.txt» или в случае, если расширение не указано «myfile»?
В этой статье, рассмотрим такие решения.
Для удобства имя файл зададим в строковой переменной:
$filename = 'myfile.txt'; // другие варианты имени файла $filename = 'file'; // не указано расширение $filename = 'my.file.txt'; // точка в имени файла $filename = 'dir/myfile.txt'; // имя файла с указанием директории ?>
Самое простое и удобное, на мой взгляд, решение использовать с, которая вернет ассоциированный массив, содержащий сведения полном имени, расширении и директории файла. После этого остается только вывести необходимый элемент массива.
function get_file_extension($filename) < $file_info = pathinfo($filename); return $file_info['extension']; >echo get_file_extension($filename); ?>
Чтобы не делать собственную функцию можно упросить код, указав в качестве второго параметра значение PATHINFO_EXTENSION. В этом случае функция вернет не весь массив, а только значение расширения.
echo pathinfo($filename, PATHINFO_EXTENSION); ?>
Оба варианта корректно вернут значение расширения «txt», кроме случая, где расширение не указано. Там, где расширения нет, будет возвращена пустая строка.
Это решение доступно для PHP, начиная с версии 4.0.3.
Если по причине версии PHP или какой-либо другой причине это решение не доступно, можно использовать традиционное решение – разбивку строки имени файла на части между точками, считая, что последний участок и будет расширением.
function get_file_extension($filename) < return end(explode(".", $filename)); >echo get_file_extension($filename); ?>
Здесь, функция explode() разбивает строку на массив из символов, разделенных точками, а функция end() возвращает последний элемент полученного массива.
В этом примере, если расширение не задано явно, т.е. точки в имени файла нет, будет возвращено исходное имя файла. В случае, если расширение есть, оно будет получено корректно.
Получить расширение загружаемого файла php
Подскажите пожалуйста, не могу получить расширение загружаемого файла.
else < print "There some errors!"; >?>
В чем проблема?
Отслеживать
задан 23 окт 2018 в 17:18
Владислав Самохин Владислав Самохин
71 10 10 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Проблема в том, что вы пытаетесь получить расширение не у файла, а у директории /home/aasinua/crm.contrust.club/uploads/
$uploaddir = '/home/aasinua/crm.contrust.club/uploads/'; $ext = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION); if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . 'название.' . $ext)) < print "File is valid, and was successfully uploaded."; >else
Отслеживать
ответ дан 23 окт 2018 в 17:34
11.4k 4 4 золотых знака 18 18 серебряных знаков 28 28 бронзовых знаков
Как узнать расширение файла средствами PHP
В данной заметке я покажу несколько способов на PHP, которые помогут узнать расширение файла. Все способы рабочие, а какой из них использовать на практике, решать вам исходя из поставленных задач.
$uploadImage = $_FILES['image']; $uploadImageName = trim(strip_tags($uploadImage['name'])); $uploadImageTmpName = trim(strip_tags($uploadImage['tmp_name'])); // Способ #1 $extension = pathinfo($uploadImageName, PATHINFO_EXTENSION); // Способ #2 $extension = pathinfo(parse_url($uploadImageName, PHP_URL_PATH), PATHINFO_EXTENSION); // Способ #3 $extension = substr($uploadImageName, strrpos($uploadImageName, '.') + 1); // Способ #4 $extension = substr(strrchr($uploadImageName,'.'), 1);
Узнать расширение файла используя PHP функции
// Способ #1 function getExtension($filename) < return preg_replace('/^.*\.(.*)$/U', '$1', $filename); >// Способ #2 function getExtension($filename) < return preg_match('/\.(.*)$/U', $filename, $matches) ? $matches[1]: ''; >// Способ #3 function get_file_extension($file_path) < $basename = basename($file_path); // получение имени файла if ( strrpos($basename, '.')!==false ) < // проверка на наличии в имени файла символа точки // вырезаем часть строки после последнего символа точки в имени файла $file_extension = substr($basename, strrpos($basename, '.') + 1); >else < // в случае отсутствия символа точки в имени файла возвращаем false $file_extension = false; >return $file_extension; >
Узнать расширение файла используя класс PHP SplFileInfo
$file = new SplFileInfo($uploadImageName); $extension = $file->getExtension();
