PHP使用随机名称重命名目录中的所有文件

时间:2012-12-24 02:57:37

标签: php image rename

我的网站上有5000个图像的目录。我可以在PHP中用完全随机的名称重命名目录中的所有图像(例如ri32rif293jf32f3f或其他)?

我需要知道这一点,所以我可以每隔几个月随机重命名一次。

2 个答案:

答案 0 :(得分:1)

非常直接:

  1. 您自己创建了一个可以生成随机文件名的函数。
  2. 您获取该目录中的文件列表。
  3. 您创建第二个列表,其中每个旧列表的文件都带有一个条目,该列表带有使用1.)中的函数生成的新名称,并且在2.)列表中不存在,并且不是到目前为止3。)。列表的一部分。
  4. 使用新名称3重命名2.)的文件。)
  5. 完成。将所有这些都包含在它自己的功能中,这样你就可以每隔几个月轻松调用它。

答案 1 :(得分:1)

function random($numchars,$digits,$small,$capital,$splchr)
{
$dig = "0123456789";

$sml = "abcdefghijklmnopqrstuvwxyz";

$spl = "!@#$%*";

$cap = "ABCDEFGHJKLMNOPQRSTUVWXYZ";

if($digits == 1)
{
    $str .= $dig;
}

if($small == 1)
{
    $str .= $sml;
}

if($capital == 1)
{
    $str .= $cap;
}

if($splchr == 1)
{
    $str .= $spl;
}

for($j=0; $j < $numchars; $j++)
{
    $randomized .= $str{ rand() % strlen($str) };
}

return $randomized;
}

    $source = "/source direcotry/";
    $destination = "/destination directory/";
    function getDirectory( $source, $destination, $level=0)
    {
    $count =1;

       $ignore = array( 'cgi-bin', '.', '..' );
       if($handle = opendir($source))
       { 
        //one by one reading a file
        while(false !== ($file = readdir($handle))) 
        {
           if( is_dir( "$source/$file" ) )
              if (!file_exists($destination.$file))
                 mkdir("$destination$file", 0700);
           if( !in_array( $file, $ignore ) )
           {
              if( is_dir( "$source/$file" ) )
              {
                getDirectory( "$source$file/", "$destination$file/", ($level+1));
              }
              else 
              { 
                  $rand = random(16,1,1,1,1);
                  $srcfile = file_get_contents($source.$file);
                  $extfile=substr($file, strrpos($file, "."));      
                  file_put_contents($destination.$rand.$extfile , $srcfile);
              }
           }
        }
        $total[$level] = $total + intval($count-1);
        echo "<br/><b> $destination  ---- ".intval($count-1)."</b><br/><br/>";
      }
      closedir($handle); 
    }
    //calling getDirectory function for repeat the for all sub folders.
    getDirectory( $source , $destination, 0);