使用glob自动创建下一个和上一个类型的页面

时间:2011-10-12 22:53:16

标签: php navigation glob slice

尝试使它能使glob函数仅显示前10个结果(文件夹中的文本文件),然后使用下一个按钮自动显示下10个结果。

目前,我使用array_slice只显示前10个,但我不确定如何自动化该过程。

foreach(array_slice(glob("*.txt"),0,9) as $filename) {
   include($filename); }

哦,当我在它的时候,如果可能的话,显示类似“显示1-10”和最后/第一个链接的内容。在我遇到第一个障碍后,我可能会想到这一点,所以除非这是一个非常简单的解决方案,否则不要为此烦恼。

1 个答案:

答案 0 :(得分:0)

您要完成的任务称为分页。在您的示例中,您可以通过设置一个确定要从哪个数字(文件)开始的变量来动态选择您正在查看的十个。

示例:

<?php
$start = isset( $_GET['start']) ? intval( $_GET['start']) : 0;

$glob_result = glob("*.txt");
$num_results = count( $glob_result);

// Check to make sure the $start value makes sense
if( $start > $num_results)
{ 
    $start = 0;
}

foreach( array_slice( $glob_result, $start, 9) as $filename) 
{
     include( $filename); // Warning!
}

如果你只想做10的增量,你可以添加一个检查以确保$start可以被10整除,在从$start数组中检索$_GET之后就是这样的:

$start = ( $start % 10 == 0) ? $start : 0;

现在,对于链接,您需要做的就是输出正确设置了start参数的<a>标记。你必须做一些逻辑来正确计算下一个和前一个值,但这是一个简单的例子:

$new_start = $start + 10;
echo '<a href="page.php?start=' . $new_start . '">Next</a>';

编辑:正如上面的评论所示,您可能不希望include()这些文件,因为include()会尝试将这些文件解释为PHP脚本。如果您只需要获取文本文件的内容,请改用file_get_contents