numéroter fichiers en commençants en 00001 (exempl)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : numéroter fichiers en commençants en 00001 (exempl)

par Ajoloca » 12 févr. 2007, 09:42

Bonjour,
Je comprends pas pourquoi il met le chiffre 4 après le 1
Je n'ai pas d'explication, normalement ça devrait donner ce que tu attends.

Essaie de le forcer (donner explicitement le caractère de remplissage) comme ceci (l'apostrophe en plus)
printf("%'04d", 1);

par Davee » 12 févr. 2007, 02:07

hi @rthur
je viens juste de voir ton post.

Natsort me semble bien intéressant. je jete un coup d'oeil.

Merci David.

par Davee » 12 févr. 2007, 02:05

Merci Jules Petibidon et Ajoloca

J'ai réussi avec str_pad
<?php

$i=1;
$chemin="dossier/";

if ($handle = opendir('dossier')) {
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
        $r = str_pad($i, 5, "0", STR_PAD_LEFT); 
        $oldfile=$chemin.$file;
        $newfile= $chemin."nom de fichier".$r.".jpg";
        $afficheImg= "nom de fichier".$r.".jpg";
        if (eregi( ".jpg$", $oldfile)){
        rename ("$oldfile", "$newfile");
        echo'<br>---new name:'.$afficheImg.'<br>';
        $i++;
        }
        }
    }
   closedir($handle);
}
?> 
ça marche bien ouf!

Si ça vous dérange pas j'aimerais quand même continuer un petit peu parcequ'avec la Fonction printf j'ai eu des petits souci et j'aimerais bein savoir pourquoi.

Voilà le code avec lequel j'ai obtenu ceci.

00014
<?php
$r='1';
$i= printf("%04d",$r);
echo $i;
?> 
Je comprends pas pourquoi il met le chiffre 4 après le 1
comprenez mon interrogation car le code est fort simple ma fois, mais voilà pfff. pour moi cette magie du quatre est tout de même un mystère.

Merci d'avance

Re: numéroter fichiers en commençants en 00001 (exempl)

par @rthur » 12 févr. 2007, 01:55

Il faudrait que je retrouve les fichier toujour dans l'ordre croissant.

C'est à dire: 01,02,...,09,10,11,...
et non pas : 1,10,...,19,2,20,21,...,29,3,30,31,...
Bonjour,

Si tu dois récupérer tes fichiers "dans l'ordre" via PHP, alors tu peux les numéroter 1, 2, 3..., 10, 11 car avec la fonction natsort tu les récupérera correctement:
http://fr.php.net/natsort

par Ajoloca » 12 févr. 2007, 00:17

Bonsoir,

La fonction str_pad() te permet de faire ce que tu souhaites.

Sinon tu as aussi la solution sprintf().

par Jules Petibidon » 12 févr. 2007, 00:15

hello,

sprintf() est bon pour ce que tu as !

numéroter fichiers en commençants en 00001 (exempl)

par Davee » 11 févr. 2007, 22:53

Bonjour tous le monde,

J'ai besoin de renommer et de numéroter une suite de fichiers.
la variable "$i" incrémente la fin des fichiers par un nombre.
Il faudrait que je retrouve les fichier toujour dans l'ordre croissant.

C'est à dire: 01,02,...,09,10,11,...
et non pas : 1,10,...,19,2,20,21,...,29,3,30,31,...

Car si j'ai besoin de les renommer, il prend les fichiers dans l'ordre ou ils viennent mais pas dans l'ordre croissant.
Vous vous apercevez donc qu'il va renommer le fichier :
"nom du fichier10"
en
"nom du fichier2"

et il y a un ordre à respecter avec les images, et j'aimerais pouvoir mettre un ou plusieurs zéro avant le chiffre 1 pour que le nombre "10" soit réellement en 10ème position dans le dossier.

voici le code que j'ai bidouillé, je ne vois pas comment mettre ce zéro devant le chiffre de la variable"$i";
<?php

$i=1;
$chemin="dossier/";

if ($handle = opendir('dossier')) {
   while (false !== ($file = readdir($handle))) {
       if ($file != "." && $file != "..") {
	    $oldfile=$chemin.$file;
            $newfile= $chemin."nom de fichier".$i.".jpg";
	    if (eregi( ".jpg$", $oldfile)){
		rename ("$oldfile", "$newfile");
		echo'<br>---new name:'.$i.'<br>';
		$i++;
	    }
        }
    }
   closedir($handle);
}
?>
Ma démarche n'est peut-être pas bonne, n'ésitez pas à me le dire je vais pas me vexer :)

Merci d'avance pour vos conseils, j'espère que mes explications sont assez claire.

Cheers
David.