如何使用PHP顺序重命名文件夹中的文件?

时间:2013-03-04 17:14:54

标签: php

我在名为'thumbs'的文件夹中有文件。它们的名称取决于原始作者如何命名/重命名。我想将它们重命名为两位数,我设法找到这个PHP代码:

function sequentialImages($path, $sort=false) {
 $i = 1;
 $files = glob($path."/{*.gif,*.jpg,*.jpeg,*.png}",GLOB_BRACE|GLOB_NOSORT);

 if ( $sort !== false ) {
  usort($files, $sort);
 }

 $count = count($files);
 foreach ( $files as $file ) {
  $newname = str_pad($i, strlen($count)+1, '0', STR_PAD_LEFT);
  $ext = substr(strrchr($file, '.'), 1);
  $newname = $path.'/'.$newname.'.'.$ext;
  if ( $file != $newname ) {
   rename($file, $newname);  
  }
  $i++;
 }
}

执行此代码的php称为“rename.php”,它位于名为“admin”的文件夹中。

因此它们如下

  1. 'admin'文件夹(包含rename.php')
  2. 'thumbs'文件夹(包含随机名称的图像)
  3. 两个文件夹都处于同一级别。

    如果两者都在不同的文件夹中,我怎么能执行'rename.php'。

    我尝试包含$path = '../thumbs';,但它无效。

    为什么不能不工作?

3 个答案:

答案 0 :(得分:1)

我想我会先检查你是否真的收到任何错误报告。既然你说你只得到一个没有任何错误的空白页面,那么就像启用错误报告一样简单,看看究竟出了什么问题。

例如,如果PHP没有对Thumb-folder的写访问权限,那么当您尝试重命名文件时,可能会收到一堆警告。检查你的php.ini并确保display_errors = On,再次运行脚本并检查是否有任何有用的错误消息。

不确定这是否有助于你(或display_errors已经设置为开启),但这将是我尝试的第一步,希望能为您提供更多有关出错的详细信息。< / p>

答案 1 :(得分:0)

在功能的顶部添加:

if( !is_dir($path) ) {
  die("error: $path is not a valid directory.");
  // or whatever error handling method you prefer
}

如果由于某种原因,您的服务器上禁用了父路径,或者路径存在其他问题,则会在此处通知您。

如果这样可以正常工作,那么请单步执行代码并确保所有内容都符合您的预期。例如:$files包含您期望的内容,$newname格式正确,rename()未返回false,表示可能因权限而导致错误等等。

答案 2 :(得分:0)

$path = realpath(__DIR__ . '/..') . '/thumbs';

realpath()函数:http://php.net/manual/en/function.realpath.php

DIR (和其他魔术常数):http://php.net/manual/en/language.constants.predefined.php