PHP أعد تسمية جميع الملفات في الدليل
سؤال
لديّ برنامج نصي لتحميل الملفات وتسميةها عدديًا (قل 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