par
Ryle » 09 mars 2009, 15:36
Le plus simple pour incrémenter une valeur, c'est d'utiliser un compteur :
function renommer_photo($dir) {
$cpt = 0;
if ($handle = opendir($dir)) {
while (($file = readdir($handle)) !== false) {
$cpt++; // on incrémente le compteur
rename($file, ...$cpt...);
}
}
closedir($handle);
}
Maintenant, quelques subtilitées :
- conserver l'extension. Parce que tel quel, le script transforme "maphoto.jpg" en "1" ... et c'est pas ce qu'on veut. Il faut donc repérer l'extension dans le nom de fichier original (à coup de strpos(), de substr() ou d'autre fonction de manipulation de chaine) et l'ajouter
- les zéros qui précèdent. Si tu veux ajouter des "0" devant le nom de ton fichier, tu peux utiliser la fonction str_pad() qui fait ça très bien

- les chemins. Parce php est très bête. T'as beau lui demander d'ouvrir un répertoire et d'en lire le contenu, dans l'instruction suivante, il n'est pas foutu de se souvenir de ce qu'il vient de faire et il faut donc lui préciser où se trouve le fichier que tu veux renommer, et vers où le renommer en lui ré-indiquant le nom du dossier
function renommer_photo($dir) {
$cpt = 0;
if ($handle = opendir($dir)) {
while (($file = readdir($handle)) !== false) {
$cpt++; // on incrémente le compteur
$extension = .....;
rename($dir . $file, $dir . str_pad($cpt, ...) . $extension);
}
}
closedir($handle);
}