【问题标题】:PHP: rename all files to lower case in a directory recursivelyPHP:递归地将目录中的所有文件重命名为小写
【发布时间】:2015-11-17 08:19:00
【问题描述】:

我需要帮助。我想递归地将目录中的所有文件重命名为小写。我有一个要测试的代码,但它只能在该文件夹中重命名,而不是递归地重命名。我怎样才能使它递归地做到这一点。

这是我使用的代码

<?php
 $directory="/data";
 $files = scandir($directory);
 foreach($files as $key=>$name){
    $oldName = $name;
    $newName = strtolower($name);
    rename("$directory/$oldName","$directory/$newName");
  }
?>

【问题讨论】:

标签: php lowercase


【解决方案1】:

您可以为此使用 SPL 的 RecursiveDirectoryIterator

<?php
$path = realpath('your/path/here');

$di = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS),
    RecursiveIteratorIterator::LEAVES_ONLY
);

foreach($di as $name => $fio) {
    $newname = $fio->getPath() . DIRECTORY_SEPARATOR . strtolower( $fio->getFilename() );
    echo $newname, "\r\n";
    //rename($name, $newname); - first check the output, then remove the comment...
}

【讨论】:

  • @VolkerK:这个方法还会改变目录名的大小写吗?
  • 不,它不会更改目录的名称。由于RecursiveIteratorIterator::LEAVES_ONLY(和SKIP_DOTS),只会处理文件而不是目录。如果您也想重命名目录...我猜CHILD_FIRST 而不是LEAVES_ONLY 会成功。
  • 顺便提一下,FileSystemIterator 需要 PHP >= 5.3.0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 2016-05-07
  • 2011-12-08
  • 1970-01-01
相关资源
最近更新 更多