Lister les fichiers images d'un répertoire et les trier par nom

Résolu
selva88 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
selva88 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,
j'ai un répertoire contenant des images de type jpg avec des noms comportant des chiffres et des lettres. : EXemple:
00169541100_20970704_TOTO_TATA_20000000.jpg
00169541101_20970704_TOTO_TATA_20000000.jpg. je souhaite considérer uniquement les lettres commençant à la position 22 c'est à dire à partir de TOTO pour faire le tri
mais j'ai utiliser la fonction sort mais il ne me trie pas correctement
<?php
$mydir = "c:/img";
if ($dir = opendir($mydir));
{

while (($file = readdir($dir)) !== false)
{
if($file != ".." && $file != ".")
{
$filelist[ ] = $file;

}
}
closedir($dir);
}

if(sizeof($filelist) != 0) {
sort($filelist);
}
?>

Quelqu'un pourrait il me donner une idée pour faire un le tri selon ces critères? D'avance merci de votre aide.
A voir également:

1 réponse

Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209
 
passe par un tableau annexe auquel tu auras ôté les 22 premiers caractères .
c est un genre de array_map avec une fonction utilisant strstr() qui retourne le segment 22 à la fin ...ou if (stripos() >0)
puis un genre de array_intersect_key
pour finir par ton sort
0
selva88 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Fallentree,
merci beaucoup pour ta réponse rapide. je suis débutante en php, je n'ai pas très bien compris comment formaliser cela dans mon code. je fait des recherches sur stripos et array_map pour voir comment les utiliser. avez vous des liens à me proposer?ou quelqu'un aurait il fait quelque chose de ce genre une fois?
0
Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209
 
https://www.php.net/manual/fr/function.array-map.php
https://www.php.net/manual/fr/function.substr.php
https://www.php.net/manual/fr/function.array-intersect-key.php

function lesphotosdetoto($filename)
{
return(substr($filename,22,strlen($filename));
}
$b = array_map("lesphotosdetoto", $filelist);
sort($b);
printr_r(array_intersect_key($b, $filelist));
0
selva88 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai essayer ce ci:
 
$mydir = "c:/img";
if ($dir = opendir($mydir));
{

while (($file = readdir($dir)) !== false)
{
if($file != ".." && $file != ".")
{
$filelist[ ] = $file;

}
}
closedir($dir);
}
for($i=0; $i<sizeof( $filelist);$i++)
{
$fi[]=substr($filelist[$i], 40,300);
}

for($i=0; $i<sizeof( $filelist);$i++)
{

sort($fi);
echo $fi[$i];
}
les éléments qui s'affichent sont bien trié, mais quand j'ouvre le répertoire img, les images ne sont pas trié dans le dossier; je souhaite que les fichiers soient triés dans le dossier. Merci d'avance.
0
Fallentree Messages postés 2309 Date d'inscription   Statut Membre Dernière intervention   209
 
dans le dossier ????
tu as un tableau issu de la lecture avec readdir($dir))
Ils n'interagissent pas
qu es ce que tu veux faire avec tes photos de toto ???
Les supprimer, les afficher ... les trier n'a pas de sens en soi.

sinon tu pourrais peut etre, en cherchant un peu, comme avec un explorer de dossier classique, les trier par date nom de fichier ...

https://www.php.net/manual/fr/function.scandir.php
0
selva88 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse. En fait je veux que les fichiers contenu dans le répertoire soit trier dans le dossier, par ce que la suite de mon programme parcours, le dossier et généré un fichier XML. Si les images ne sont pas trier dans le dossier, ça fausse. Par exemple dans le répertoire, toutes les images TATA doivent se suivre, ensuite celle portant TATA ainsi de suite.
0