Как отрезать расширение у названия файла на PHP
По ряду задач возникает необходимость получить название файла без типового расширения, тоесть без строки следующей за последним символом точки и без самой точки. Как то столкнулся с такой казалось бы тривиальной задачей и был удивлён обилию инфы на этот счёт в интернете. Как говорится, на все вкусы, но ньюансы работы есть. Вот и решил собрать наиболее распространённые решения.
- Отрезать разрешение файла с помощью регуляргого выражения.
- С помощью строковых функций.
- С помощью функции разбора пути pathinfo().
//Задаём переменной $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().
Дата публикации: