[RESOLU] impossible de renommer des fichiers çà marche pas.

Eléphanteau du PHP | 27 Messages

12 sept. 2017, 10:51

Bonjour les amies,

je fait un script pour renommer une centaines de fichiers qui ont un nom de fichier qui commence par photo_ pour le remplacer par rien voici un exemple:
photo_xxxxxxx.jpg en xxxxxxx.jpg

mais le problemes c'est que je ne sais pas comment enlever le nom photo_ de mes fichiers??

voici mon script:

Code : Tout sélectionner

<?php @ini_set("display_errors", "on"); @error_reporting(E_ALL); $dir = "/home/jrencont/www/wall/media/profile/"; $dir2 = "/home/jrencont/www/wall/media/profile/newimg/"; $photo = "photo_"; $photo2 = ''; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { //echo " $file .<br/> " . filetype($dir . $file) . "\n"; rename("$dir.$file", "$dir2.$photo2.$file"); } closedir($dh); } } var_dump($file); echo $file; ?>
ce script copie le fichier renomer dans un repertoire different.

mais le en plus il m'ajoute le mot photo sur mes fichiers??

mais la actuellement , j'ai ce message d'erreur:

Warning: rename(/home/jrencont/www/wall/media/profile/.photo_0soam88rsaprry3adsyojhg2u1j.jpeg,/home/jrencont/www/wall/media/profile/newimg/..photo_0soam88rsaprry3adsyojhg2u1j.jpeg): No such file or directory in /home/jrencont/www/script/ren2.php on line 19

merci de votre aide

Eléphanteau du PHP | 27 Messages

12 sept. 2017, 11:09

jessaye d'enlever les point . .. mais çà marche pas

Code : Tout sélectionner

<?php @ini_set("display_errors", "on"); @error_reporting(E_ALL); $dir = "/home/jrencont/www/wall/media/profile/"; $dir2 = "/home/jrencont/www/wall/media/profile/newimg/"; $photo = "photo_"; $photo2 = ''; $file2 = "$file\n"; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if ($file != "." && $file != "..") { //echo " $file .<br/> " . filetype($dir . $file) . "\n"; rename("$dir.$file2", "$dir2.$photo2.$file2"); } } closedir($dh); } } //var_dump($file); // echo $file; ?>

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7373 Messages

13 sept. 2017, 09:47

Bonjour,

Mon conseil pour parcourir un répertoire où il y a des fichiers c'est de ne pas utiliser opendir/readdir/closedir mais plutôt la fonction glob() qui permet une fois mise dans un foreach de parcourir l'ensemble des fichiers en 1 seule ligne de code facilement lisible.
foreach(glob("/home/jrencont/www/wall/media/profile/*.jpg") as $fichier) {
    // Là tu fais ton traitement
    echo $fichier."<br />";
}
Ensuite si tu veux juste supprimer "photo_" du nom des fichiers tu peux simplement faire un rename() avec un str_replace() pour remplacer "photo_" par du vide "", si tu veux le mettre dans un nouveau sous-répertoire, tu remplaces "photo_" par ton sous-répertoire suivi d'un slash : "newimg/"

:arrow: A toi de jouer et de faire des tests pour que ça fonctionne comme tu veux ! :-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 27 Messages

15 sept. 2017, 09:51

bonjour @arthur,

dsl du retard mais j'ai essayer de le faire avec ce code mais çà ne marche toujours pas ?
peux etre que tu peut me dire pourquoi?
je suis pas dev mais j'essaye de l'être, j'ai beaucoup de mal à lire le code et a le comprendre.
je rêve de le devenir dsl si pour toi çà parait vraiment super facile mais pour un mec comme moi
qui n'a pas l'esprit dev , c'est hyper dur d'imaginer ce qu'il ce passe dans les variables... :oops:

Code : Tout sélectionner

<?php ini_set("display_errors", "on"); @error_reporting(E_ALL); $directory = '/home/jrencont/www/wall/media/profile/'; foreach (glob($directory."*.jpg") as $filename) { $file = realpath($filename); rename($file, str_replace("photo_","",$file)); } ?>

Eléphanteau du PHP | 27 Messages

15 sept. 2017, 10:00

merde çà a marcher

ce code !! mais le probleme il ma enlever tout les extensions .jpg !!!

comment les remettres!!

Code : Tout sélectionner

<?php ini_set("display_errors", "on"); @error_reporting(E_ALL); foreach (glob("/home/jrencont/www/wall/media/profile/*.jpg") as $filename) { $file = realpath($filename); rename($file, str_replace("photo_","",$file)); } ?>

Eléphanteau du PHP | 27 Messages

15 sept. 2017, 10:23

Bon je vais me repondre puisse que j'ai réussi à renommer tout les fichiers en .jpg ouaaou je suis content de moi , car je suis que débutant en php

Code : Tout sélectionner

<?php ini_set("display_errors", "on"); @error_reporting(E_ALL); $sufixe = '.jpg'; foreach (glob("/home/jrencont/www/wall/media/profile/*") as $filename) { $file = realpath($filename); rename($file, str_replace($file,$file.$sufixe,$file)); //echo $filename."<br />"; } ?>

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7373 Messages

15 sept. 2017, 14:11

Je pense que ta ligne avec le realpath() ne sert à rien, mais bravo en tout cas, l'essentiel c'est que ça fonctionne désormais !
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 27 Messages

16 sept. 2017, 20:32

Merci beaucoup @rtur pour ton aide ou tu ma guider dans le bon sens .. :D bravo encore