PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-05-2010 09:51:28

sam01
Membre
Inscription : 28-03-2010
Messages : 7

rename de fichier existant

Bonjour j'ai code suivant

// Fonction de renommage : si fichier.ext existe, renomme en fichier1.ext ;  si fichier1.ext existe, renomme en fichier2.ext etc..
function Rename_fich($dossier,$fichier)
{
  //Si le fichier existe et est un fichier valide
  if (is_file($dossier.$fichier))
  {
     // Informations sur le fichier
    $info = pathinfo($dossier.$fichier);
    $extension = $info['extension'];
    $filename = $info['filename'];                      
    // Cherche dans le nom de fichier des caractères numériques en fin de nom
    $num = preg_match('#[0-9]+$#',$filename,$matches)? $matches[0] : null;    
    // Si des caractères numériques sont trouvés, incrémente la valeur de +1 sinon concatène 1 au nom du fichier
    $filename = isset($num)? substr($filename,0,- strlen($matches[0])).($matches[0]+1) :$filename.'1';                  
// Reconstruction du nom de fichier avec son extension (si elle existe)
    $fichier = !empty($extension) ? $filename.'.'.$extension : $filename;              
    // Appel de la fonction pour re vérification avec le nouveau nom du fichier
    return Rename_fich($dossier,$fichier);  
          }
}
        $dest_fichier = basename($_FILES['up_photo']['name']);// cela donne le même résultat que la commande ==> $_FILES['up_photo']['name'];
        // $extension = strrchr(strtolower($dest_fichier), '.');
        // formatage nom fichier
        // enlever les accents
        $dest_fichier = strtr($dest_fichier,
        'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
        'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
        // remplacer les caracteres autres que lettres, chiffres et point par _
        $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
        // on vérifie si le fichier n'est pas déjà présent :
        $chemin_fic = $dest_dossier . $dest_fichier;
        // Vérification de l'existence du fichier dans le répertoire et si besoin renommage du fichier
        $chemin_fic = Rename_fich($chemin_fic,$dest_fichier);

Le but est de renomé un fichier qui existe sur serveur.

Le souci c'est que ça ne fonctionne pas.

Le fichier est écrasé à chaque fois...

Hors ligne

#2 20-05-2010 10:43:15

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : rename de fichier existant

Loin de moi l'idée de vouloir faire trop simple, mais pourquoi ne pas avoir opté pour un simple


<?php
-----------------------------------------------------------------
// si le fichier existe => explode pour récupérer la chaine après le dernier point (l'extension) et tu re-concatène après
// si le fichier existe => explode pour récupérer le dernier caractère avant le dernier . (le dernier du nom du fichier)
// si ce caractère est numérique, alors tu fais un $i = caractère +1...
// si ce caractère est du texte, alors tu initie un $i = 1
-----------------------------------------------------------------
$fichier = blablabla;
$ext = blabla;
$i = ton résultat en fct de la vérif;
-----------------------------------------------------------------
rename("dossier/'.$fichier.'.'.$ext.'", "dossier/'.$fichier.$i.'.'.$ext.'");
?>
 

MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#3 20-05-2010 14:12:00

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : rename de fichier existant

Loin de moi l'idée de vouloir faire trop simple, mais pourquoi ne pas avoir opté pour une solution encore plus  simple

http://www.php.net/manual/fr/function.strrchr.php

a++

Hors ligne

#4 20-05-2010 15:04:08

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : rename de fichier existant

Bon, le lien de Pierrot plante (pardonnez le, il apprends à mettre des liens big_smile)

Dans le bon ordre, cela donne :


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#5 20-05-2010 15:56:01

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : rename de fichier existant

j'aime l'efficacité de ta fonction de ta fonction blabla big_smile:D
a++

Hors ligne

Pied de page des forums