Как отрезать расширение у названия файла на PHP


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

  1. Отрезать разрешение файла с помощью регуляргого выражения.
  2. С помощью строковых функций.
  3. С помощью функции разбора пути pathinfo().

PHP
//Задаём переменной $nametest строку с полным именем файла
$nametest = "../test/file/namefile.txt";

//Или как вариант с URL
$nametest = "http://it.test2.ru/12345";

//Отрезаем разрешение файла с помощью регулярного выражения
echo preg_replace('/.[^./]+$/', '', $nametest);

//С помощью строковых функций
echo substr($nametest, 0, strrpos($nametest,'.'));

//С помощью функции pathinfo()
echo pathinfo($nametest, PATHINFO_FILENAME);

Как видно из результатов теста первые два варианта только удаляют само разрешение файла, в то время как вариант с функцией разбора URL отдаёт только само название файла без его разрешения. Следует отмерить, что решение с регулярными выражениями более ресурсоёмкое и лучше выбрать комбинацию строковых функций, но она плохо работает в URL. Если же нужено получить только имя файла из URL - это конечно последний вариант с функцией разбора пути pathinfo().

Дата публикации: 

ТОП 10 случайных публикаций



Сайт разработан студией © WEB-VidST   


Яндекс.Метрика