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

Как получить расширение файла 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-2024 The PHP Group
  • My PHP.net
  • Contact
  • Other PHP.net sites
  • Privacy policy

filetype

Возвращает тип файла. Возможными значениями являются fifo, char, dir, block, link, file, socket и unknown.

Возвращает false в случае возникновения ошибки. filetype() также вызовет ошибку уровня E_NOTICE , если системный вызов stat завершится ошибкой или тип файла неизвестен.

Ошибки

В случае неудачного завершения работы генерируется ошибка уровня E_WARNING .

Примеры

Пример #1 Пример использования функции filetype()

echo filetype ( ‘/etc/passwd’ );
echo «\n» ;
echo filetype ( ‘/etc/’ );
?>

Результат выполнения приведённого примера:

file dir

Примечания

Замечание: Результаты этой функции кешируются. Более подробную информацию смотрите в разделе clearstatcache() .

Подсказка

Начиная с PHP 5.0.0, эта функция также может быть использована с некоторыми обёртками url. Список обёрток, поддерживаемых семейством функций stat() , смотрите в разделе Поддерживаемые протоколы и обёртки.

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

  • is_dir() — Определяет, является ли имя файла директорией
  • is_file() — Определяет, является ли файл обычным файлом
  • is_link() — Определяет, является ли файл символической ссылкой
  • file_exists() — Проверяет существование указанного файла или каталога
  • mime_content_type() — Определяет MIME-тип содержимого файла
  • pathinfo() — Возвращает информацию о пути к файлу
  • stat() — Возвращает информацию о файле

User Contributed Notes 6 notes

19 years ago

There are 7 values that can be returned. Here is a list of them and what each one means

block: block special device

char: character special device

fifo: FIFO (named pipe)

file: regular file

link: symbolic link

unknown: unknown file type

13 years ago

filetype() does not work for files >=2GB on x86 Linux. You can use stat as a workarround:

$type=trim(`stat -c%F $file`);

Note that stat returns diffenerent strings («regular file»,»directory». )

15 years ago

I use the CLI version of PHP on Windows Vista. Here’s how to determine if a file is marked «hidden» by NTFS:

function is_hidden_file ( $fn )

$attr = trim ( exec ( ‘FOR %A IN («‘ . $fn . ‘») DO @ECHO %~aA’ ));

if( $attr [ 3 ] === ‘h’ )
return true ;

This should work on any Windows OS that provides DOS shell commands.

12 years ago

Putting @ in front of the filetype() function does not prevent it from raising a warning (Lstat failed), if E_WARNING is enabled on your error_reporting.

The most common cause of filetype() raising this warning and not showing a filetype() in the output (it actually returns NULL) is, if you happened to pass just the ‘Dir or File Name’ and not the complete «Absolute or Relative Path» to that ‘file or Dir’. It may still read that file and return its filetype as «file» but for Dir’s it shows warning and outputs NULL.
eg:
$pathToFile = ‘/var/www’;
$file = ‘test.php’;
$dir = ‘somedir’;

Output for filetype($file) will be returned as ‘file’ and possibly without any warning, but for filetype($dir), it will return NULL with the warning «Lstat failed», unless you pass a complete path to that dir, i.e. filetype($pathToFile.’/’.$dir).

This happened to me and found this solution after a lot of trial and error. Thought, it might help someone.

9 years ago

Note there is a bug when using filetype with for example Japanese filenames :
https://bugs.php.net/bug.php?id=64699

The whole PHP interpreter comes crashing down without anyway to avoid it or capture an exception.

10 years ago

echo «Zum testen müssen tatsächlich existente Namen verwendet werden.
» ;
echo «Pfad und Dateiname müssen getrennt eingetragen und durch einen Punkt verbunden sein.
» ;
echo «Example: [filetype(\»../dir/u_dir/\».\»temp.jpg\»)] liefert -> file
» ;
?>

  • Copyright © 2001-2024 The PHP Group
  • My PHP.net
  • Contact
  • Other PHP.net sites
  • Privacy policy

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

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

В сегодняшней статье мы поговорим о том как можно в PHP определить расширения файла.

У вас в разработке очень часто будет возникать задача получения расширения файла например при загрузке файла на сервер. При сохранении файла на сервере есть так же очень частая задача сохранять файл не с исходным именем, а указать в качестве имени файла уникальное значения чтобы имя файла не совпадало с другими файлами на сервере.

Для решения этой задачи существует очень много разных вариантов, и я вам их покажу. В качестве примеров я буду показывать все действия на трех файлах, первый файл это будет файла с расширениям .txt, второй будет изображения с расширениям .png и третий вариант тоже будет изображения, но с расширениям .jpeg.

Для удобства я буду использовать переменные в которых будут находиться имена файлов с которыми мы будем работать и получаться их расширения. Еще я создал функцию под названием get_file_extension, в неё я буду помещать код, который будет выводить расширения файла в консоль.

php file extension

В первом варианте получения расширения файла мы будем использовать функции mb_strtolower, mb_substr. Функция mb_strtolower принимает в качестве параметра строку и переводит все символы этой строки в нижний регистр. Вторая функция mb_substr принимает тоже строку и возвращает часть строки.

php> mb_strtolower(mb_substr(mb_strrchr($file_name, ‘.’), 1));

php file extension

Второй вариант это использовать функцию pathinfo. Функция pathinfo возвращает информацию о файле в виде массива такую как filename, basename, extension, dirname. Нам вся эта информация сейчас не важна, мы хотим получить только расширения, для этого мы вторым параметром можем передать специальный флаг PATHINFO_EXTENSION которые указывает на то чтобы нам функция вернула только расширения файла в виде строки, а не всю информацию в виде массива.

php> pathinfo($file_name, PATHINFO_EXTENSION);

php file extension

Следующий вариант получения расширения файла это использовать функции array_pop и explode.

php> array_pop(explode(‘.’, $file_name));

php file extension

Сначала функция explode разбивает строку на массив по разделителю, в данном случаи разделись у нас это точка, и после функция array_pop возвращает последний элемент из этого массива, а последний элемент массива это как раз наше расширения.

Следующим вариантом для получения расширения файла мы будем использовать класс SplFileInfo. Класс SplFileInfo имеет много разных методом по предоставлении разной информации о файле, нам нужно использовать один из его методов который называется getExtension.

php> $info = new SplFileInfo($file_name);
php> $info->getExtension();

php file extension

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.

DirectoryIterator::getExtension

Возвращает строку ( string ), содержащую расширение файла или пустую строку ( string ), если у файла нет расширения.

Примеры

Пример #1 Пример использования DirectoryIterator::getExtension()

$directory = new DirectoryIterator ( __DIR__ );
foreach ( $directory as $fileinfo ) if ( $fileinfo -> isFile ()) echo $fileinfo -> getExtension () . «\n» ;
>
>

Вывод приведённого примера будет похож на:

php txt jpg gz

Примечания

Замечание:

Другим способом получения расширения является использование функции pathinfo() .

$extension = pathinfo ( $fileinfo -> getFilename (), PATHINFO_EXTENSION );
?>

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

  • DirectoryIterator::getFilename() — Возвращает имя файла текущего элемента DirectoryIterator
  • DirectoryIterator::getBasename() — Получает базовое имя текущего элемента DirectoryIterator
  • pathinfo() — Возвращает информацию о пути к файлу

User Contributed Notes

There are no user contributed notes for this page.

  • Copyright © 2001-2024 The PHP Group
  • My PHP.net
  • Contact
  • Other PHP.net sites
  • Privacy policy

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

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