分页中的目录文件-php

bla*_*d Ψ 4 php pagination

我想在浏览器的目录中显示文件。我知道使用@opendirreaddir.. 是可行的。但是我想要的是将列表中的文件数限制为特定数量,然后使用分页显示。

Sur*_*ams 5

您可以使用scandir将目录的所有内容读入数组。然后根据分页值输出数组的内容。

$offset = 10; //get this as input from the user, probably as a GET from a link
$quantity = 10; //number of items to display
$filelist = scandir('/mydir');

//get subset of file array
$selectedFiles = array_slice($filelist, $offset-1, $quantity);

//output appropriate items
foreach($selectedFiles as $file)
{
    echo '<div class="file">'.$file.'</div>'; 
}
Run Code Online (Sandbox Code Playgroud)


drz*_*aus 5

交叉发布一个例子(也在这个问题中)--

DirectoryIteratorLimitIterator我新最好的朋友,尽管glob似乎更容易进行预过滤。您也可以编写自定义的FilterIterator. 我认为需要 PHP > 5.1。

无前置过滤器:

$dir_iterator = new DirectoryIterator($dir);
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
Run Code Online (Sandbox Code Playgroud)

球形预过滤器:

$dir_glob = $dir . '/*.{jpg,gif,png}';

$dir_iterator = new ArrayObject(glob($dir_glob, GLOB_BRACE));
$dir_iterator = $dir_iterator->getIterator();
$paginated = new LimitIterator($dir_iterator, $page * $perpage, $perpage);
Run Code Online (Sandbox Code Playgroud)

然后,做你的事:

foreach ($paginated as $file) { ... }
Run Code Online (Sandbox Code Playgroud)

请注意,在示例中DirectoryIterator$file将是 的实例SplFileInfo,而globexample 只是磁盘路径。