PHP读取文本文件行限制最后20行,下一页/上一页

时间:2013-12-02 14:12:39

标签: php limit fopen lines

我需要帮助:

将文件/ var / log / syslog读入HTML页面,限制为最后20行和下一行/上一页按钮

2 个答案:

答案 0 :(得分:1)

试试此代码

<?php
$lines = file($_SERVER['DOCUMENT_ROOT'] . '/inc/data.txt'); # This is your text file.
$line_amount = count($lines);
#echo '<pre>'; print_r($lines); echo '</pre>';

$perpage = 20;

$p = isset($_GET['p']) ? $_GET['p'] : 1;
for ($i = (($p * $perpage) - $perpage); $i <= (($perpage * $p) - 1); $i++){
    if($i >= $line_amount){
        break;
    }
    else{
        if($lines[$i] != ''){
            echo ''.$lines[$i].'<br />'; # This is the output loop.
        }
    }
}

//$p = $p + $perpage;

?>            
<table summary="" cellpadding="10" cellspacing="0"  border="0" class="global-links-menu">
        <tr>
<?php

$total_pages = $line_amount/$perpage;
if($line_amount % $perpage != 0){
    $total_pages = $total_pages + 1;
}


if($p!=1)
{
  $back_page=$p-1;
    echo "<td ><a href='?p=$back_page'>Back</a></td>";
}
else
{
    $back_page=$p-1;
    echo "<td >Back</td>";
}

for($j=1;$j<=$total_pages;$j++)
{

    if($j==$p)
    {        
        echo "<td >$p</td>";
    }
    else
    {
        echo "<td ><a href='?p=$j'>$j</a></td>";    
    }
}

if($p <= $total_pages - 1){
    $next_page=$p+1;
    echo "<td ><a href='?p=$next_page'>Next</a></td>";    
}
else
{
    echo "<td >Next</td>";
}
?>
    </tr></table>

答案 1 :(得分:1)

你最好的选择是产生一个sudoed tail:PHP进程通常不能读取syslog文件。

使用sudoers或您选择的工具正确配置visudo文件,然后:

$output = shell_exec('/path/to/sudo /path/to/tail -n 20 /var/log/syslog | head -n 10');

下一个/上一个按钮可用于配置上面的数字。在这里,我正在阅读系统日志的最后20行,并输出前10行。在某种程度上,与MySQL的LIMIT选项不同。