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

Обновлено: 21.11.2024

Узнайте, как получить имя и расширение файла из строки PHP, содержащей местоположение файла

  • Даниял Хамид
  • 25 августа 2020 г.
  • 4 темы
  • 7 минут чтения

Использование базового имени()

Мы можем использовать basename() для возврата имени файла и расширения из пути к файлу, поскольку функция возвращает конечный компонент из строки, содержащей путь к файлу или каталогу. Чтобы продемонстрировать, как это работает, рассмотрим несколько примеров:

Заставить basename() работать с многобайтовыми символами:

Поскольку basename() поддерживает локаль, она не будет корректно работать с многобайтовыми символами, пока сначала не будет задана соответствующая локаль с помощью функции setlocale().

Использование pathinfo()

Функция pathinfo() может использоваться для возврата информации о пути к файлу. Ниже приведены два способа, которыми мы можем получить имя файла и расширение из пути к файлу, используя pathinfo() :

Мы могли бы также использовать константы PATHINFO_FILENAME и PATHINFO_EXTENSION с pathinfo(), чтобы получить имя файла и расширение отдельно.

Или то же самое можно написать без передачи опции в качестве второго аргумента функции pathinfo() , и в этом случае она вернет ассоциативный массив, содержащий информацию о пути к файлу. Например:

Мы могли бы также использовать $pathInfo['filename'] и $pathInfo['extension'] с pathinfo(), чтобы получить имя файла и расширение по отдельности.

Давайте рассмотрим еще несколько примеров:

В приведенном выше примере обратите внимание, как возвращается basename . но ни имя файла, ни расширение не совпадают.

Заставить pathinfo() работать с многобайтовыми символами:

Поскольку pathinfo() поддерживает локаль, она не будет корректно работать с многобайтовыми символами, пока сначала не будет задана соответствующая локаль с помощью функции setlocale().

Использование взрыва() с DIRECTORY_SEPARATOR

Другим разумным способом получить имя файла с расширением может быть получение только конечного компонента строки пути к файлу путем разделения его на массив с помощью разделителя каталогов. Чтобы увидеть, как это делается, рассмотрим следующие примеры:

Ключевым отличием использования взрыва() (с целью получения имени файла с расширением) является приведенный выше пример. Обратите внимание, что это возвращает пустую строку для пути, заканчивающегося разделителем каталогов. С точки зрения получения имени файла с расширением, это, по-видимому, правильное поведение — т. е. возврат конечного компонента, когда строка не заканчивается разделителем каталогов, и пустым в противном случае.

Работа с многобайтовыми символами:

Многобайтовые символы должны корректно работать с функцией взрыва(), если строка содержит правильные многобайтовые последовательности. Однако, если возможно, при работе с многобайтовыми строками всегда лучше использовать функции, учитывающие локаль, или функции многобайтовых строк. В случае взрыва() вы могли бы потенциально заменить его на mb_split() .

Использование класса SplFileInfo

В классе SplFileInfo у нас есть два метода, которые мы можем использовать для получения имени файла с расширением:

  1. SplFileInfo::getBasename()
  2. SplFileInfo::getFilename()

При использовании любого из них будьте осторожны с различиями между ними, как показано в некоторых из следующих примеров:

Обратите внимание, что в следующих случаях в методе getFilename() есть косая черта, а в методе getBasename() ее нет:

Заставить методы SplFileInfo работать с многобайтовыми символами:

Согласно документам, SplFileInfo::getBasename() учитывает локаль, а SplFileInfo::getFilename() — нет. Это означает, что для правильной работы SplFileInfo::getBasename() с многобайтовыми символами необходимо сначала установить соответствующий языковой стандарт с помощью функции setlocale().

Хотя метод getFilename() будет работать с некоторыми/большинством многобайтовых кодировок символов (т. е. если строка содержит правильные многобайтовые последовательности), иногда он может не давать правильных результатов. Таким образом, при работе с многобайтовыми строками всегда лучше использовать функции, учитывающие языковой стандарт, или функции многобайтовых строк.

Надеюсь, этот пост был вам полезен. Опубликовано 25 августа 2020 г. Пожалуйста, проявите свою любовь и поддержку, поделившись этим постом.

В практике программирования мы обычно используем другой код, чтобы чего-то достичь. Но мы всегда находим, как лучше сделать :).

Аналогично для расширения файла извлечения в PHP мы видели различные скрипты для достижения этого. Я собираюсь объяснить все способы сделать это. В приведенном ниже примере я объясняю пять типов скриптов для извлечения расширения файла в php.

В ‘banner.jpg’ мы хотим извлечь сюда расширение файла ‘jpg’.

Сценарий 1: - взорвать файловую переменную и получить последний элемент массива, это будет расширение файла.

Сценарий 2: Найдите последнее вхождение «.» в имени файла, он вернет «.jpg», а затем удалите первый символ строки, используя substr(strrhr($fileName, ‘.’), 1) он вернет точное расширение файла ‘.jpg’

Сценарий 3. В третьем подходе мы используем strrpos, чтобы найти позицию последнего вхождения «.» в имени файла и увеличить эту позицию на 1, чтобы разбить строку из (.)

Сценарий 4. В подходе preg_replace мы используем поиск и замену по регулярным выражениям. В функции preg_replace первый параметр — это шаблон для поиска, второй параметр $1 — это ссылка на то, что соответствует первому (.*), а третий параметр — это имя файла.

Сценарий 5:-
Пришло время узнать о php-функции pathinfo(), pathinfo() возвращает информацию о файле. Если второй необязательный параметр не передан, он вернет ассоциативный массив, содержащий имя каталога, базовое имя, расширение и имя файла. Если передан второй параметр, он вернет конкретную информацию (как в приведенном ниже примере мы передали PATHINFO_EXTENSION, чтобы получить расширение файла)

Поэтому, на мой взгляд, избегайте операций со строками и сопоставления регулярных выражений для извлечения расширения. Было бы лучше использовать функцию pathinfo() для извлечения расширения в php.

О Рупендре

Инженер DevOps, путешественник, имеющий опыт работы с различными инструментами и технологиями DevOps, включая Jenkins, TeamCity, Elasticsearch Logstash Kibana (ELK), Ansible и языки сценариев. Я знаком с технологиями с открытым исходным кодом, такими как Cassandra, система очередей RabbitMQ, модерация изображений с использованием Opencv. Мой предыдущий опыт включает веб-разработку на PHP, MySQL, а также PHP cms и фреймворк; Технологии пользовательского интерфейса HTML5, CSS3, JQUERY, BOOTSTRAP и адаптивный дизайн.

Расширение файла PHP очень полезно для правильной проверки любой загрузки файлов. Получение расширения по имени файла или местоположению файла очень полезно, поскольку оно позволяет программистам понять, что они должны загружать или обрабатывать файлы, относящиеся только к PHP, а не к какому-либо другому языку программирования или файлу с любым другим расширением. Пользовательский PHP играет важную роль всякий раз, когда необходимо получить расширение файла, поскольку эти функции возвращают требуемое расширение файла, с помощью которого можно обновить требуемый файл, связанный с PHP.

Синтаксис

Веб-разработка, языки программирования, тестирование программного обеспечения и другое

Каждый язык программирования имеет расширение для файла, поэтому файл PHP имеет расширение, которое представлено как:

public SplFileInfo::getExtension() : строка, имя файла и т. д.

  • public: это модификатор доступа, используемый для демонстрации того, что область действия программы является общедоступной и доступной для всех.
  • SplFileInfo: содержит имя файла и содержимое, используемое для получения информации, связанной с файлом.
  • getExtension(): это функция в PHP, которая используется для получения расширения, связанного с PHP.
  • строка: строка — это тип ввода, который передается как часть функции getExtension().

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

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

  • Для возврата параметра обратно можно использовать некоторые пользовательские функции, так как расширение, поддерживаемое большинством версий PHP, включает функцию, такую ​​как substr(), которая широко используется для возврата части строки.
  • Еще одна функция, используемая для возврата расширения как части строки, включает strrchr(), которая используется для поиска последних вхождений одной строки внутри другой строки или может быть названа вложенной строкой.
  • Функция PHP pathinfo() – это еще один простой способ возврата информации о файле, относящейся к PHP, который используется для получения всей необходимой и важной информации, такой как путь к файлу, в котором он существует, за которым следует имя каталога, базовый файл имя, расширение файла.
  • При использовании с SplFileInfo расширение файла get также может возвращать ожидаемое расширение файла с учетом необходимой строки.
  • Во многих случаях программист PHP забывает поставить расширение; таким образом, можно сказать, что в программе нет расширения для PHP, тогда в этом случае будет сложно обработать файл со всей необходимой информацией, тем самым заставив программиста иметь дело с пустой строкой, так как возвращаемый тип будет пустым строка.
  • Существует множество способов определить расширение или получить расширение файла; в этом случае может быть возможность использовать несколько точек в функции pathinfo(), она отследит вложенный путь, а затем вернет тот же результат, что и ожидалось, без особых проблем с последним типом расширения файла.
  • Существует небольшая разница, которая существует при использовании функции pathinfo() в PHP с нулевым значением и без определения расширения при реализации кода PHP, из-за которого, когда первый используется для извлечения строки, он возвращает нуль, который в очередь возникает, когда какое-то несоответствие или значение по умолчанию попадает в канал, с другой стороны, когда расширение не предоставлено, оно будет вести себя примерно так же, как пустая строка, не предоставляя никакой релевантной или необходимой информации.
  • Таким образом, эти функции очень полезны для разработчиков PHP, поскольку они позволяют правильно выполнять метаданные и другие операции с файлами.
  • Для того, чтобы получить расширение файла в PHP, делается много обходных путей, но описанные способы просты для понимания и выполнения.

Примеры получения расширения файла PHP.

Вот следующие примеры, упомянутые ниже

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

Код:

получитьРасширение());
$in_1 = new SplFileInfo('import_ant.tar.gz');
var_dump($in_1->getExtension());
$in_1 = new SplFileInfo('image_with.jpg');
var_dump($in_1->getExtension());
?>

Вывод:

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

Код:

Вывод:

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

Обучение PHP (5 курсов, 3 проекта) 5 онлайн-курсов | 3 Практический проект | 28+ часов | Поддающийся проверке сертификат об окончании | Пожизненный доступ
4,5 (8 581 оценка)

Код:

Вывод:

Эта программа демонстрирует пользовательскую функцию, которая используется для возврата подстроки, вызывая функцию везде, где это необходимо, как показано в выходных данных.

Код:

Вывод:

Эта программа демонстрирует вывод, если нет расширения, если пустая строка с функцией pathinfo() вернется, как показано.

Код:

Вывод:

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

Код:

Вывод:

Заключение

Расширение файла PHP get, как и другие языки программирования, используется для определения типа файла PHP, который будет загружен и обработан, путем предоставления некоторой необходимой информации, такой как каталог, расширение, имя файла, базовое имя. Это полезно, когда для выхода из тупиковой ситуации требуется устранение неполадок.

Рекомендуемые статьи

Это руководство по получению расширения файла PHP. Здесь мы обсуждаем, как получить расширение файла в PHP и примеры вместе с кодами и выводами. Вы также можете прочитать следующие статьи, чтобы узнать больше –

Если у вас есть имя файла, из которого нужно удалить расширение с помощью PHP, это можно сделать несколькими способами. Вот три способа с небольшим сравнением.

Использование информации о пути

Функция pathinfo() возвращает массив, содержащий имя каталога, базовое имя, расширение и имя файла. Кроме того, вы можете передать ему одну из констант PATHINFO_ и просто вернуть эту часть полного имени файла:

Если имя файла содержит полный путь, возвращается только имя файла без расширения.

Использование базового имени

Если расширение известно и одинаково для всех имен файлов, вы можете передать второй необязательный параметр в функцию basename(), чтобы удалить это расширение из имени файла:

Если имя файла содержит полный путь, возвращается только имя файла без расширения.

Использование substr и strrpos

Если имя файла содержит полный путь, возвращается полный путь и имя файла без расширения. Вы также можете использовать basename(), чтобы избавиться от пути, если это необходимо (например, basename(substr($filename, 0, strrpos($filename, ".")))) хотя это медленнее, чем использование pathinfo.

Сравнение

Выполнение каждого из них в цикле 10 000 000 раз на моем Mac с PHP 5.4:

pathinfo: 10,13 секунды
basename: 7,87 секунды
substr/strrpos: 6,05 секунды
basename(substr/strrpos): 11,98 секунды

Если имя файла не содержит полного пути или не имеет значения, если он есть, то вариант substr/strrpos будет самым быстрым.

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

Если имя файла содержит путь, путь вам не нужен и вы не знаете, какое у него расширение, используйте параметр pathinfo().

Заключение

Есть много других способов сделать это, и некоторые из них могут быть быстрее. Во многих случаях скорость, вероятно, не имеет большого значения (в конце концов, 10 секунд для запуска pathinfo были 10 миллионов раз); целью этого поста было показать несколько способов удаления расширения из имени файла с помощью PHP.

Читайте также: