• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • SplFileInfo::getFilename()

    (PHP 5 >= 5.1.2, PHP 7)

    Gets the filename

    说明

    publicSplFileInfo::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();