在php中重命名多个文件而不覆盖另一个。

问题描述 投票:0回答:1

我在一个文件夹里有很多文件。我想在不覆盖一个文件的情况下重命名它们。

假设这些是我的文件名:

  • Ana. php
  • Maria.php
  • Ioana.php
  • Georgiana.php
  • Bianca.php

我得到了一个数组,告诉我哪些文件要重命名。

array(
    "Maria.php"  => "Ioana.php",
    "Bianca.php" => "Cristina.php",
    "Ioana.php"  => "Daniela.php"
)

这就是一个例子 Ioana.php 被覆盖了。因为... Maria.php "想要 "这个名字。

还是说说这个例子吧。

array(
    "Maria.php"  => "Ioana.php",
    "Ioana.php"  => "Maria.php"
)

这个例子中的文件想改名。

我需要一个解决方案,无论什么文件应该被重命名,它们永远不会覆盖文件夹中的另一个文件。每次需要重命名的文件数量可能不同。

我需要对所有的数组文件进行重命名。问题是如何在不覆盖的情况下做到这一点。

文件的名称非常重要。添加一个时间戳后缀不是一个好的解决方案。

php directory overriding rename filenames
1个回答
0
投票

使用 file_exists($filename) 在你重命名你的文件之前,检查他是否存在,如 。

<?php
while(count($arr) > 0)
{
  foreach ($arr as &$value) {
    if (file_exists($value)) {
      rename($value,$value + "temp");

    }
    rename(array_search($value,$arr),$value);
    unset($tab[array_search($value, $arr)]);
  }
}
?>

你只需要在你的数组中循环,直到所有的文件都被重命名。

© www.soinside.com 2019 - 2024. All rights reserved.