【问题标题】:File rename through php通过php重命名文件
【发布时间】:2017-01-13 13:55:38
【问题描述】:

我有文件重命名的代码;

    <?php
$directory= 'J:\xampp\htdocs\rename\abc';
$handler = opendir($directory);
$index = 1;
while ($file = readdir($handler)) {
    if ($file != "." && $file != "..") {
      rename($directory."/".$file, $directory."/".$index.".JPG");
        $index++;
    }

}
closedir($handler);
?>

而不是将文件重命名为 1,2,3,4,....22 它将文件重命名为 1,10,11,12,13,14,15,.......

欢迎回答

【问题讨论】:

  • 您的代码似乎是正确的。也许您与现有文件有名称冲突?
  • 重命名工作正常,但它们是按名称排序的,你会在 19 之后看到 2、3、4
  • 也许您只是在查看目录时没有正确排序目录
  • 如果你想正确地对它们进行排序,你应该使用natsort
  • 为什么文件重命名的顺序很重要?

标签: php xampp


【解决方案1】:

您的代码似乎正确,如评论中所述,这可能是排序问题。为了防止这种情况,我通常用前导零“填充”我的号码:

  • 01.JPG
  • 02.JPG
  • ...
  • 10.JPG

我使用str_pad

$index = str_pad($index, 2, '0', STR_PAD_LEFT);

您的代码将如下所示:

$directory= 'J:\xampp\htdocs\rename\abc';
$handler = opendir($directory);
$index = 1;
while ($file = readdir($handler)) {
    if ($file != "." && $file != "..") {
        $index = str_pad($index, 2, '0', STR_PAD_LEFT);
        rename($directory . "/" . $file, $directory . "/" . $index . ".JPG");
        $index++;
    }

}
closedir($handler);

我你有不到一百个文件你应该用 1 个零填充,不到一千个用 2 个零填充等等。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2014-09-09
    • 2014-01-20
    • 2012-11-21
    • 2018-07-15
    • 2023-03-11
    • 2014-07-07
    • 2017-04-01
    • 1970-01-01
    • 2012-09-29
    相关资源
    最近更新 更多