SplFileInfo::getFilename()
(PHP 5 >= 5.1.2, PHP 7)
Gets the filename
说明
public SplFileInfo::getFilename(void): string
Gets the filename without any path information.
参数
此函数没有参数。
返回值
The filename.
范例
SplFileInfo::getFilename() example
<?php $info = new SplFileInfo('foo.txt'); var_dump($info->getFilename()); $info = new SplFileInfo('/path/to/foo.txt'); var_dump($info->getFilename()); $info = new SplFileInfo('http://www.php.net/'); var_dump($info->getFilename()); $info = new SplFileInfo('http://www.php.net/svn.php'); var_dump($info->getFilename()); ?>
以上例程的输出类似于:
string(7) "foo.txt" string(7) "foo.txt" string(0) "" string(7) "svn.php"
参见
- SplFileInfo::getBasename() Gets the base name of the file
I was trying to work out the difference between this and getBasename (http://php.net/manual/splfileinfo.getbasename.php) and the only difference I could really see was a special case of a file in the filesystem root with the root specified: <?php function getInfo($reference) { $file = new SplFileInfo($reference); var_dump($file->getFilename()); var_dump($file->getBasename()); } $test = [ '/path/to/file.txt', '/path/to/file', '/path/to/', 'path/to/file.txt', 'path/to/file', 'file.txt', '/file.txt', '/file', ]; foreach ($test as $file) { getInfo($file); } // will return: /* string(8) "file.txt" string(8) "file.txt" string(4) "file" string(4) "file" string(2) "to" string(2) "to" string(8) "file.txt" string(8) "file.txt" string(4) "file" string(4) "file" string(8) "file.txt" string(8) "file.txt" string(9) "/file.txt" // see how getFilename includes the '/' string(8) "file.txt" // but getBasename doesn't string(5) "/file" // ditto getFilename string(4) "file" // ditto getBasename */ ?>
It should be mentioned that the function returns the name of the directory if "filename" is of type "directory". Hence <?php $info = new SplFileInfo('/path/to/'); var_dump($info->getFilename()); ?> should return "to" The function name is kind of misleading here and I am glad to have it tried.
// Careful, output is different for `filename` vs `getFilename`. Inconsistent behaviour. $path = 'test.txt'; $pathInfo = pathinfo($path); echo '<pre>'; print_r($pathInfo); echo '<br>'; echo '***************'; $splFileInfo = new SplFileInfo($path); echo '<br>'; echo $splFileInfo->getBasename(); echo '<br>'; echo $splFileInfo->getFilename();