【问题标题】:randomly rename files in php在php中随机重命名文件
【发布时间】:2019-03-23 17:52:01
【问题描述】:

我有一个包含 1000 张图片的文件夹,我需要将它们从 1.jpg 随机重命名为 1000.jpg ,每次运行脚本时都必须完全随机。 我只需要每次运行脚本时 1.jpg 都不同。

到目前为止,我必须使用以下代码。 请帮忙。谢谢

<?php

if (file_exists('Image00001.jpg'))
{
$renamed= rename('Image00001.jpg', '1.jpg');

if ($renamed)
{
echo "The file has been renamed successfully";
}
else
{
echo "The file has not been successfully renamed";
}
}
else
{
echo "The original file that you want to rename does not exist";
}

?>

【问题讨论】:

  • 您到底为什么要以这种方式重命名文件?如果你想选择一个随机图像,从目录中获取所有文件名,应该在一个数组中,然后随机播放。
  • 因为图片必须叫1.jpg
  • 基本上我需要的是每次运行脚本时,我都会将 1000 张图像中的一张重命名为 1.jpg,它可以是随机的或增量的。谢谢
  • 第一次之后会发生什么?在您拥有 1.jpg 之后,您不能再将另一个重命名为 1.jpg...
  • 再次。为什么每次都需要重命名?对每个请求进行 1000 次重命名是一项繁重的文件系统操作。有更好的方法,无需重命名。你只需要以不同的方式处理它。文件名无关紧要,只需将其存储在您要使用的变量中

标签: php random rename


【解决方案1】:

看看这个,如果这有帮助的话。我试过了,它有效。创建一个php文件并复制代码,并在同一目录下创建一个文件夹名称files并用扩展名为.jpg的图像填充它,然后运行该php文件。这是精炼的代码。让我知道这是否适合您。

<?php
$dir    = 'files/'; //directory
$files1 = scandir($dir);
shuffle($files1); //shuffle file names
$i           = 1; //initialize counter
//store existing numbered files in array
$exist_array = array();
while (in_array($i . ".jpg", $files1)) {
    array_push($exist_array, $i . ".jpg");
    $i++;
}
foreach ($files1 as $ff) {
    if ($ff != '.' && $ff != '..') // check for current or parent directory, else it will replace the directory name
        {
        // check whether the file is already numbered
        if (in_array($ff, $exist_array)) {
            continue;
        }
        //next 3 lines is proof of random rename
        echo $ff . "         --->     ";
        rename($dir . $ff, $dir . $i . ".jpg");
        echo $i . ".jpg<br/>";
        $i++;
    }
}
?> 

【讨论】:

  • PHP 文件必须只运行一次,否则如果反复执行,它会继续随机替换重命名的文件。
  • 感谢您的帮助,它肯定会重命名文件,但如果我重新运行脚本,它会删除许多文件,即使输出显示已将其中一个文件重命名为 1.jpg,但它不会实际去做。
  • 看到输出说 405.jpg ---> 1.jpg 但 1.jpg 不存在,其他任何一个也不存在,看起来它正在删除而不是重命名 59.jpg -- -> 2.jpg 429.jpg ---> 3.jpg 279.jpg ---> 4.jpg 395.jpg ---> 5.jpg
  • @John 我已经完善并更新了答案以满足您的需求,请告诉我。 :)
猜你喜欢
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 2019-12-27
  • 1970-01-01
  • 2011-10-21
相关资源
最近更新 更多