如何使用PHP读取具有间隔的特定行文本

时间:2016-09-09 03:41:45

标签: php

我想在文本文件中读取行,每页显示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>');

不行,缺少行

1 个答案:

答案 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>');