Перейти к содержимому

Как получить расширение файла php

  • автор:

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 );
?>

Смотрите также

  • 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();

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar