题
我有一个脚本来上传文件和数字命名他们(说1-15),当我删除文件(比如说5号)我要的文件进行重命名1-14。如果我删除一个文件9,并在此工作好,如果超过10我删除任何它删除多个文件。据我可以告诉问题不删除而是在重命名
这里是一段脚本我在使用麻烦的:
unlink($path.$img);
$files = natsort(glob("$path/*.jpg"));
$num = 1;
foreach($files as $file) {
$new = 'photo' . $num . '.jpg';
rename($file, dirname($file).'/'.$new);
$num++;
}
谢谢!
解决方案
从工作实施例php.net
<?php
$path = "E:\\SERVER\\sudhir\\songs";
$dh = opendir($path);
$i=1;
while (($file = readdir($dh)) !== false) {
if($file != "." && $file != "..") {
echo "<br/>".substr($path."\\".$file, 0,-3)."_mysongs_mp3";
rename($path."\\".$file, substr($path."\\".$file, 0,-3)."_mysongs_mp3");
$i++;
}
}
closedir($dh);
?>
其他提示
这是因为你覆盖文件,当您重新命名。
想象一下下面的文件列表,你删除后的文件11:
1
10
12
2
3
4
5
...
如果你现在开始重命名,会发生以下情况:
1 -> 1
10 -> 2
12 -> 3
2 -> already overwritten by 10!
的一个解决方案:使用排序您natsort($files)
阵列重命名前
不隶属于 StackOverflow