Php列出目录中的文件并删除扩展名

时间:2015-01-06 12:26:13

标签: php list

我使用这个php代码来检索存储在目录中的文件。

if ($handle = opendir('FolderPath')) {

    while (false !== ($entry = readdir($handle))) {

        if ($entry != "." && $entry != "..") {

            echo "$entry\n <br />" ; 
        }
    }

    closedir($handle);
}

此目录仅保存PHP个文件,如何从回显结果中删除扩展名?例如:(index.php将成为index

6 个答案:

答案 0 :(得分:1)

这应该适合你:

echo basename($entry, ".php") . "\n <br />" ; 

答案 1 :(得分:1)

快速执行此操作的方法是

<?php

 if ($handle = opendir('FolderPath')) {

    while (false !== ($file = readdir($handle))) {

      if ($file != "." && $file != "..") {

          $info = pathinfo($file);
          $file_name =  basename($file,'.'.$info['extension']);
          echo $file_name;
     }
    }

   closedir($handle);

&GT;

答案 2 :(得分:1)

$files = glob('path/to/files/*.*');
foreach($files as $file) {
  if (! is_dir($file)) {
    $file = pathinfo($file);
    echo "<br/>".$file['filename'];
  }
}

使用pathinfo()

答案 3 :(得分:1)

$entry = substr($entry, 0, strlen($entry) - 4);

请注意,这是一个简单快捷的解决方案,如果您100%确定您的扩展程序采用* .xxx格式,则该解决方案非常有效。但是,如果您需要关于可能的不同扩展长度的更灵活和更安全的解决方案,则不建议使用此解决方案。

答案 4 :(得分:1)

最简单的方法是使用the glob function

foreach (glob('path/to/files/*.php') as $fileName) {
    //extension .php is guaranteed here
    echo substr($fileName, 0, -4), PHP_EOL;
}

此处glob的优势在于您可以取消那些令人讨厌的readdiropendir来电。唯一轻微的&#34; disatvantage&#34; $fileName的值也将包含路径。但是,这很容易解决(只需添加一行):

foreach (glob('path/to/files/*.php') as $fullName) {
    $fileName = explode('/', $fullName);
    echo substr(
        end($fileName),//the last value in the array is the file name
        0, -4),
    PHP_EOL;
}

答案 5 :(得分:0)

优雅的解决方案是使用$suffix方法的DirectoryIterator::getBasename()属性。提供后,每次通话都会移除$suffix。对于已知的扩展,您可以使用:

foreach (new DirectoryIterator('/full/dir/path') as $file) {
  if ($file->isFile()) {
    print $file->getBasename('.php') . "\n";
  }
}

或者这是一个通用的解决方案:

foreach (new DirectoryIterator('/full/dir/path') as $file) {
  if ($file->isFile()) {
    print $file->getBasename($file->getExtension() ? '.' . $file->getExtension() : null) . "\n";
  }
}

PHP文档:http://php.net/manual/en/directoryiterator.getbasename.php

相关问题