Petit soucis de nom de fichier...

Petit soucis de nom de fichier... - PHP - Programmation

Marsh Posté le 06-05-2004 à 12:36:53    

Voilà, j'ai un scrpt PHP qui me classe des photos par ordre décroissant en fonction de leur nom.
 
J'ai donc :
 
(1).jpg
(2).jpg
...
(10).jpg
(11).jpg
...
(20).jpg
(21).jpg
...
 
J'aimerai donc qu'il me garde cet ordre mais dans le sens décroissant...
 
Mais étant donné que mon hébergement est sous unix, il me les classe de cette façon :
 
...
(21).jpg
(20).jpg
...
(2).jpg
...
(11).jpg
(10).jpg
...
(1).jpg
 
au lieu de :
 
(21).jpg
(20).jpg
...
(11).jpg
(10).jpg
...
(2).jpg
(1).jpg
 
Donc ma question est : comment renommer en masse mes fichiers (sous Windows) pour qu'à la place de (01).jpg j'ai (0001).jpg et comme ça, je pense, il respectera l'ordre... à moins qu'il existe une variable PHP capable de me faire un tri en fonction du nom mais comme je le souhaite.
 
Merci d'avance.


---------------
Thenab - Quitte à passer pour un con, passe vite !
Reply

Marsh Posté le 06-05-2004 à 12:36:53   

Reply

Marsh Posté le 06-05-2004 à 12:44:26    

C'est pas propre à Unix, Windows te ferait le même coup, la chaine "2" est plus grande que la chaine "10".
 
Maintenant, ça peut se contourner, mais ça dépend de la méthode de tri :)

Reply

Marsh Posté le 06-05-2004 à 12:47:25    

Et comment faire ? Voici mon script :
 

Code :
  1. // ensemble d'action sur le dossier d'images au premier chargement de la page
  2. ///////////////////////////////////////////////////////////////////////////////////////////////////
  3. session_start();
  4. if ($start==1)
  5. {
  6. // effacement des anciennes données
  7. session_unregister("liste2" );
  8. session_unregister("totalphoto" );
  9. session_unregister("repimages" );
  10. unset($liste2);
  11. unset($totalphoto);
  12. unset($repimages);
  13. // Initialisation du nombre total de photo
  14. $totalphoto=0;
  15. //récupération du nouveau répertoire :
  16. $repimages=$repcontenu;
  17. // Ouverture de repertoire transmis par la variable $repimages
  18. $rep=@opendir($repphotos."/".$repimages);
  19. // Parcours du repertoire
  20. while ($nomfichier=readdir($rep))
  21.  {
  22.  // filtre sur les fichiers de type jpg/JPG
  23.  if(substr($nomfichier,-3)=="jpg" || substr($nomfichier,-3)=="JPG" )
  24.   {
  25.   // Incrémente le nb total de photos pour la boucle d'affichage
  26.   $totalphoto++;
  27.   // Accède à chaque photo, une par une.
  28.   $acces=$repphotos."/".$repimages."/".$nomfichier;
  29.   // Récupère la date de la photo
  30.   $datefichier=date("Y-m-d-H-i-s", filemtime($acces));
  31.   // Récupère le poids de la photo
  32.   $poidsfichier=ceil((filesize($acces))/1024);
  33.   // Construction du nom en fonction ndes réègles de tri
  34.   if($tricontenu==1)
  35.    $liste2[]=$nomfichier."|".$poidsfichier."|".$nomfichier;
  36.   if($tricontenu==2)
  37.    $liste2[]=$datefichier."|".$poidsfichier."|".$datefichier;
  38.   }
  39.  }
  40. // Fermeture du repertoire.
  41. closedir($rep);
  42. // Tri standard de la liste
  43. sort($liste2);
  44. // Inversement dl'ordre enfonction des paramètres
  45. if($ordrecontenu==2)
  46. $liste2=array_reverse($liste2);
  47. // enregistrement des données en variable de session (afin d'éviter un rescan du dossier à chaque chargement) :
  48. session_register("liste2" );
  49. session_register("totalphoto" );
  50. session_register("repimages" );
  51. unset($start);
  52. }


 
Merci :D !


Message édité par thenab le 06-05-2004 à 12:48:59

---------------
Thenab - Quitte à passer pour un con, passe vite !
Reply

Marsh Posté le 06-05-2004 à 13:06:07    

Ben, y a natsort() et natcasesort() déjà qui font du tri naturel qui peuvent servir dans ton cas

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed