我想在文本文件中读取行,每页显示4行,4行..
如果加载domain.com/pages/page2.php
输出读取线(5,6,7,8)
如果加载domain.com/pages/page3.php
输出读取线(9,10,11,12)
我的代码
$file1 = basename($_SERVER["SCRIPT_FILENAME"], '.php') ;
$file1 = preg_replace("/.+?(\\d+).*/", "$1", $file1);
$file2 = ($file1 - 1);
$file3 = ($file2 *4);
$file4 = ($file3 + 3 );
function retrieveText($file, $init, $end, $sulfix = '')
{
$i = 1;
$output = '';
$handle = fopen($file, 'r');
while (false === feof($handle) && $i <= $end) {
$data = fgets($handle);
if ($i >= $init) {
$output .= $data . $sulfix;
}
$i++;
}
fclose($handle);
return $output;
}
echo retrieveText('file.txt', $file3, $file4, '<br>');
不行,缺少行
答案 0 :(得分:2)
首先,我建议你摆脱你的REGEX名称getter,并采用以下格式:
domain.com/pages?page=1
domain.com/pages?page=2
domain.com/pages?page=3
等等。您将使用$_GET['page']
来检索页码。
现在,我采用的方式是使用包含文本所有行的数组并使用array_slice()
函数。这应该做的事情:
function retrieveText($file, $page, $per_page, $suffix)
{
$content = file_get_contents($file);
$array = explode(PHP_EOL, $content);
$start = --$page * $per_page;
$lines = array_slice($array, $start, $per_page);
$output = '';
foreach ($lines as $line) {
$output .= $line . $suffix;
}
return $output;
}
然后你应该像这样调用这个函数:
$page = $_GET['page'];
$page = $page === null ? 1 : $page;
retrieveText('file.txt', $page, 4, '<br>');