Sıralama ve görüntüleme dizin listesi alfabetik php) (opendir kullanarak

5 Cevap php

php çaylak - Ben opendir bir klasördeki görüntülerin bir listesini görüntülemek için birlikte bu komut Arnavut kaldırımlı ettik, ama alfabetik diziyi sıralamak için nasıl (ve nerede) çalışamaz

<?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);
}

?>

Herhangi bir tavsiye veya işaretçiler çok duyacağız!

5 Cevap

Bunları sıralamak için önce bir diziye dosyalarınızı okumak gerekir. Bu nasıl?

<?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: Bu ne soruyorsun ilgili değil, ama çok pathinfo() fonksiyonu ile dosya uzantıları daha genel bir kullanım alabilir. Daha sonra, herhangi bir uzantıyı kaldırmak olabilir uzantıları kodlanmış bir dizi gerek olmazdı.

Nasıl hakkında:

$directory = sort(scandir('Images'));

Bu yapardım yoludur

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";
}

Not: dizge değişkeni doğru adını alır böylece foreach döngü içine bu taşıyın.

// strips files extensions      
$crap   = array(".jpg", ".jpeg", ".JPG", ".JPEG", ".png", ".PNG", ".gif", ".GIF", ".bmp", ".BMP", "_", "-");    

$newstring = str_replace($crap, " ", $file );

Using opendir()

opendir() liste sıralanır izin vermez. El sıralamayı gerçekleştirmek gerekir. Bunun için, ilk olarak bir dizinin tüm dosya adlarını eklemek ve bunları sıralamak sort() :

$path = "/path/to/file";

if ($handle = opendir($path)) {
    $files = array();
    while ($files[] = readdir($dir));
    sort($files);
    closedir($handle);
}

Ve then kullanarak bunları listelemek foreach:

$blacklist = array('.','..','somedir','somefile.php');

foreach ($files as $file) {
    if (!in_array($file, $blacklist)) {
        echo "<li>$file</a>\n <ul class=\"sub\">";
    }
}

Using scandir()

Bu scandir() ile çok daha kolaydır. Bu sizin için varsayılan sıralama gerçekleştirir. Aynı işlevsellik aşağıdaki kodu ile elde edilebilir:

$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\">";
    }
}

Using DirectoryIterator (preferred)

$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\">";
}