PHP: имя файла без расширения файла - лучший способ?
11350 просмотра
4 ответа
Я пытаюсь вытащить имя файла из каталога без расширения.
Я пробиваюсь со следующим:
foreach ($allowed_files as $filename) {
$link_filename = substr(basename($filename), 4, strrpos(basename($filename), '.'));
$src_filename = substr($link_filename, 0, strrpos($link_filename) - 4);
echo $src_filename;
}
... Но это не может работать, если длина строки расширения больше 3. Я просмотрел документы PHP безрезультатно.
Автор: jml Источник Размещён: 12.11.2019 09:50Ответы (4)
12 плюса
У PHP есть удобная pathinfo()
функция, которая сделает всю работу за вас здесь:
foreach ($allowed_files as $filename) {
echo pathinfo($filename, PATHINFO_FILENAME);
}
Пример:
$files = array(
'somefile.txt',
'anotherfile.pdf',
'/with/path/hello.properties',
);
foreach ($files as $file) {
$name = pathinfo($file, PATHINFO_FILENAME);
echo "$file => $name\n";
}
Выход:
somefile.txt => somefile
anotherfile.pdf => anotherfile
/with/path/hello.properties => hello
Автор: cletus
Размещён: 03.01.2010 03:41
3 плюса
попробуй это
function file_extension($filename){
$x = explode('.', $filename);
$ext=end($x);
$filenameSansExt=str_replace('.'.$ext,"",$filename);
return array(
"filename"=>$filenameSansExt,
"extension"=>'.'.$ext,
"extension_undotted"=>$ext
);
}
использование:
$filenames=array("file1.php","file2.inc.php","file3..qwe.e-rt.jpg");
foreach($filenames as $filename){
print_r(file_extension($filename));
echo "\n------\n";
}
выход
Array
(
[filename] => file1
[extension] => .php
[extension_undotted] => php
)
------
Array
(
[filename] => file2.inc
[extension] => .php
[extension_undotted] => php
)
------
Array
(
[filename] => file3..qwe.e-rt
[extension] => .jpg
[extension_undotted] => jpg
)
------
Автор: ekhaled
Размещён: 03.01.2010 03:43
2 плюса
1 плюс
Попробуй это:
$noExt = preg_replace("/\\.[^.]*$/", "", $filename);
Редактировать в ответ на комментарий Cletus:
Вы можете изменить его одним из следующих способов:
$noExt = preg_replace("/\\.[^.]*$/", "", basename($filename));
// or
$noExt = preg_replace("/\\.[^.\\\\\\/]*$/", "", $filename);
Да, PHP нужны литералы регулярных выражений ...
Автор: nickf Размещён: 03.01.2010 03:24Вопросы из категории :
- php Как вы отлаживаете PHP-скрипты?
- php Заставьте XAMPP / Apache обслуживать файл вне htdocs
- php Как включить файлы PHP, которые требуют абсолютного пути?
- php Скрипт входа со скрытыми кнопками
- php How can I find unused functions in a PHP project
- php Эффективное изменение размера JPEG изображения в PHP
- php MySQL или PDO - каковы плюсы и минусы?
- php Как бы вы внедрили аутентификацию на основе FORM без резервной базы данных?
- php Самый простой способ профилировать скрипт PHP
- php Изображения в PHP
- php PHP эквивалент .NET / Java toString ()
- php В чем разница между | и || или операторы?
- php Пул соединений в PHP
- php PHP выполнить фоновый процесс
- php htmlentities () против htmlspecialchars ()
- php Генерирование (псевдо) случайных буквенно-цифровых строк
- php Какой лучший способ получить дробную часть числа с плавающей точкой в ??PHP?
- php Как реализовать кеш HTML для сайта PHP?
- php Как я могу предотвратить SQL-инъекцию в PHP?
- php PHP: Как расширить / сжать Tinyurls