php noob here - J'ai assemblé ce script pour afficher la liste des images d'un dossier avec opendir, mais je ne peux pas déterminer comment (ou où) trier le tableau par ordre alphabétique
<?php
// opens images folder
if ($handle = opendir('Images')) {
while (false !== ($file = readdir($handle))) {
// strips files extensions
$crap = array(".jpg", ".jpeg", ".JPG", ".JPEG", ".png", ".PNG", ".gif", ".GIF", ".bmp", ".BMP", "_", "-");
$newstring = str_replace($crap, " ", $file );
//asort($file, SORT_NUMERIC); - doesnt work :(
// hides folders, writes out ul of images and thumbnails from two folders
if ($file != "." && $file != ".." && $file != "index.php" && $file != "Thumbnails") {
echo "<li><a href=\"Images/$file\" class=\"thickbox\" rel=\"gallery\" title=\"$newstring\"><img src=\"Images/Thumbnails/$file\" alt=\"$newstring\" width=\"300\" </a></li>\n";}
}
closedir($handle);
}
?>
Tout conseil ou pointeur serait très apprécié!
Vous devez d'abord lire vos fichiers dans un tableau avant de pouvoir les trier. Que dis-tu de ça?
<?php
$dirFiles = array();
// opens images folder
if ($handle = opendir('Images')) {
while (false !== ($file = readdir($handle))) {
// strips files extensions
$crap = array(".jpg", ".jpeg", ".JPG", ".JPEG", ".png", ".PNG", ".gif", ".GIF", ".bmp", ".BMP", "_", "-");
$newstring = str_replace($crap, " ", $file );
//asort($file, SORT_NUMERIC); - doesnt work :(
// hides folders, writes out ul of images and thumbnails from two folders
if ($file != "." && $file != ".." && $file != "index.php" && $file != "Thumbnails") {
$dirFiles[] = $file;
}
}
closedir($handle);
}
sort($dirFiles);
foreach($dirFiles as $file)
{
echo "<li><a href=\"Images/$file\" class=\"thickbox\" rel=\"gallery\" title=\"$newstring\"><img src=\"Images/Thumbnails/$file\" alt=\"$newstring\" width=\"300\" </a></li>\n";
}
?>
Edit: Cela n’est pas lié à ce que vous demandez, mais vous pourriez aussi obtenir un traitement plus générique des extensions de fichier avec la fonction pathinfo () . Vous n'auriez pas besoin d'un tableau d'extensions codé en dur, vous pourrez alors supprimer n'importe quelle extension.
opendir()
opendir()
n'autorise pas le tri de la liste. Vous devrez effectuer le tri manuellement. Pour cela, ajoutez d’abord tous les noms de fichiers à un tableau et triez-les avec sort()
:
$path = "/path/to/file";
if ($handle = opendir($path)) {
$files = array();
while ($files[] = readdir($dir));
sort($files);
closedir($handle);
}
Et then les liste en utilisant foreach
:
$blacklist = array('.','..','somedir','somefile.php');
foreach ($files as $file) {
if (!in_array($file, $blacklist)) {
echo "<li>$file</a>\n <ul class=\"sub\">";
}
}
scandir()
C'est beaucoup plus facile avec scandir()
. Il effectue le tri pour vous par défaut. La même fonctionnalité peut être obtenue avec le code suivant:
$path = "/path/to/file";
$blacklist = array('somedir','somefile.php');
// get everything except hidden files
$files = preg_grep('/^([^.])/', scandir($path));
foreach ($files as $file) {
if (!in_array($file, $blacklist)) {
echo "<li>$file</a>\n <ul class=\"sub\">";
}
}
DirectoryIterator
(recommandé)$path = "/path/to/file";
$blacklist = array('somedir','somefile.php');
foreach (new DirectoryIterator($path) as $fileInfo) {
if($fileInfo->isDot()) continue;
$file = $path.$fileInfo->getFilename();
echo "<li>$file</a>\n <ul class=\"sub\">";
}
C'est comme ça que je le ferais
if(!($dp = opendir($def_dir))) die ("Cannot open Directory.");
while($file = readdir($dp))
{
if($file != '.')
{
$uts=filemtime($file).md5($file);
$fole_array[$uts] .= $file;
}
}
closedir($dp);
krsort($fole_array);
foreach ($fole_array as $key => $dir_name) {
#echo "Key: $key; Value: $dir_name<br />\n";
}
Remarque: déplacez-le dans la boucle foreach afin que la variable newstring soit renommée correctement.
// strips files extensions
$crap = array(".jpg", ".jpeg", ".JPG", ".JPEG", ".png", ".PNG", ".gif", ".GIF", ".bmp", ".BMP", "_", "-");
$newstring = str_replace($crap, " ", $file );
$directory = scandir('Images');