Intereting Posts
php – Как исправить эту ошибку неправильного типа смещения FOSUserBundle – как перенаправить уже зарегистрированных пользователей при попытке доступа к login_path Как найти слово, которому предшествует другое конкретное слово? Как изменить форму контакта 7 Динамическое перенаправление URL-адреса – WordPress macOS Sierra, устанавливающая расширение PHP Extension Активный токен доступа должен использоваться для запроса информации о текущем пользователе и OAuthException => 2500 Сохранение координат и данных с карт Google в базе данных Почему текст PHP echo'd теряет форматирование? Как использовать пользовательские шаблоны в gii (используя Yii 2) использование jquery для публикации данных в zend framework Этот код cURL не работает? Хранить данные сенсибилизации в Silverstripe 3.1 Laravel 5.1: сочетания дескрипторов с одинаковыми именами столбцов ошибка при использовании exec () для вызова скрипта python Поддерживать связь между двумя серверами php, websocket и socket.io

SPLFileInfo: получить имя файла без расширения

Я обращаюсь к нескольким файлам в объекте SPLFileInfo. Я вижу способ получить путь, имя файла и даже расширение файла. Есть ли способ получить имя файла без расширения? Вот код, с которым я работал, но я надеюсь получить что-то более элегантное. Есть ли решение из коробки?

$file = new SplFileInfo("path/to/file.txt.zip"); echo 'basename: '.$file->getBasename(); echo PHP_EOL; echo 'filename: '.$file->getFilename(); echo PHP_EOL; echo 'extension: '.$file->getExtension(); echo PHP_EOL; echo 'basename w/o extension: '.$file->getBasename('.'.$file->getExtension()); >>OUTPUT >>basename: file.txt.zip >>filename: file.txt.zip >>extension: zip >>basename w/o extension: file.txt 

Я опаздываю, и все кредиты должны быть отправлены на @salathe, чтобы первым помочь OP, но вот ссылка на руководство PHP для функции basename. В принципе, вы получаете расширение, а затем добавляете точку . и, наконец, используйте функцию basename для получения имени, например:

 $file->getBasename('.' . $file->getExtension()) 

Для быстрого чтения здесь приведен пример справочной страницы PHP:

 $info = new SplFileInfo('file.txt'); var_dump($info->getBasename()); $info = new SplFileInfo('/path/to/file.txt'); var_dump($info->getBasename()); $info = new SplFileInfo('/path/to/file.txt'); var_dump($info->getBasename('.txt')); 

Вывод:

 string(8) "file.txt" string(8) "file.txt" string(4) "file" 

Я не мог найти ничего официально, как .net's – Path.GetFileNameWithoutExtension https://msdn.microsoft.com/en-us/library/system.io.path.getfilenamewithoutextension%28v=vs.110%29.aspx

Вот что я использую вместо preg_replace ("/.[^.]+$/", "", $ file-> getBasename ());

Я протестировал его с помощью «file.txt.zip», чтобы убедиться, что он возвращает «file.txt», а не «файл»,