Mammouth du PHP |
2278 Messages
07 août 2012, 09:27
Bjr:
Remarque générale:
qu'une fonction ait plusieurs points de sorties, en particulier dans des if, est souvent générateur d'erreurs, car on ne peut pas prévoir la valeur retournée.
Quelques détails ci-dessous
// Fonction de renommage : si fichier.ext existe, renomme en fichier1.ext ; si fichier1.ext existe, renomme en fichier2.ext etc..
//parametre $adresse_fichier
function Rename_fich($adresse_fichier)
{
//Si le fichier existe et est un fichier valide
if (is_file($adresse_fichier))
{
// on réaffecte la variable $adresse_fichier avec $DESTINATION_FOLDER
$adresse_fichier = $DESTINATION_FOLDER; // avec ; , c'est mieux
//une vérification instructive:
var_dump($adresse_fichier);
//que suivra une autre vérification instructive:
var_dump( $DESTINATION_FOLDER);
$info = pathinfo($adresse_fichier);
$extension = $info['extension'];
$filename = $info['filename'];
$dossier = $info['dirname'];
// Cherche dans le nom de fichier des caractères numériques en fin de nom et si oui incrémente ce nombre grâce à la fonction anonyme create_function
// que suivra un intéressant:
var_dump($nomFichier);
$nomFichier = preg_replace_callback('#([0-9]+$)#', create_function('$matches','return $matches[1]+1;'), $nomFichier, '1', $count);
// Si des caractères numériques sont trouvés et incrémentés (le paramètre $count employé dans preg_replace_callback indique le nombre de remplacements), $filename prend sa nouvelle valeur, sinon l'ancienne concaténée à 1
$nomFichier = !empty($count)? $nomFichier : $nomFichier.'1';
// Reconstruction du nom de fichier avec son extension (si elle existe)
$nomFichier = !empty($extension) ? $nomFichier.'.'.$extension : $nomFichier;
// Reconstruction de l'adresse du fichier
$adresse = $dossier.'/'.$nomFichier;
// Appel de la fonction pour re vérification avec le nouveau nom du fichier
return Rename_fich($adresse);
}
// Retourne le chemin complet du fichier
else return $adresse_fichier;
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD