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

9

Решение

Я опаздываю, и все заслуги должны пойти на @salathe, который будет первым, кто помогает ФП, но вот ссылка на руководство по PHP для базовой функции. По сути, вы получите расширение, а затем добавьте точку . и, наконец, используйте функцию 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"
14

Другие решения

Я не смог найти ничего официального, как .net — 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», а не «file»

0

По вопросам рекламы [email protected]