Справочники, инструменты, документация

PHP: постраничный вывод строк из текстового файла

Постраничный вывод строк из текстового файла на PHP.
<?php
$file=@file("file.txt");
$count=count($file);

$link="<a href='news.php?n=5'>5</a>";
$link2="<a href='news.php?n=10'>10</a>";
$link3="<a href='news.php?n=20'>20</a>";

// получаем кол-во строк
if(isset($_GET["n"])):
    $n=$_GET["n"];
else: $n="5";
endif;

$temp_array=array("5","10","20");
if(!ctype_digit($n) or !in_array($n,$temp_array)):
    $n="15";
endif;

switch($n):
    case 5:
    $max="5"; $link="<b>5</b>";
    break;

    case 10:
    $max="10"; $link2="<b>10</b>";
    break;

    case 20:
    $max="20"; $link3="<b>20</b>";
    break;
endswitch;

$total=ceil($count/$max);

// вводим переменную, указывающую номер страницы
if(empty($_GET["p"])){$_GET["p"]="1";}
$p=$_GET["p"];

if(!ctype_digit($p) or $p>$total):
    $p="1";
endif;
$first=$p*$max-$max;
$last=($p*$max)-1;

print "Строк на страницу: $link | $link2 | $link3<br><br>";

for($i=$first;$i<=$last;$i++):
    if(@$file[$i]){print "$file[$i]<br>";}
endfor;

if($total>0):
    #две назад
    print "<div>";
     if(($p-2)>0):
     $ptwoleft="<span id='first_page_link'><a class='first_page_link' href='news.php?n=$n&p=".($p-2)."'>".($p-2)."</a></span> ";
    else:
     $ptwoleft=null;
    endif;

    #одна назад
    if(($p-1)>0):
     $poneleft="<span id='first_page_link'><a class='first_page_link' href='news.php?n=$n&p=".($p-1)."'>".($p-1)."</a></span> ";
     $ptemp=($p-1);
    else:
     $poneleft=null;
     $ptemp=null;
    endif;

    #две вперед
    if(($p+2)<=$total):
     $ptworight=" <span id='first_page_link'><a class='first_page_link' href='news.php?n=$n&p=".($p+2)."'>".($p+2)."</a></span>";
    else:
     $ptworight=null;
    endif;

    #одна вперед
    if(($p+1)<=$total):
     $poneright=" <span id='first_page_link'><a class='first_page_link' href='news.php?n=$n&p=".($p+1)."'>".($p+1)."</a></span>";
     $ptemp2=($p+1);
    else:
     $poneright=null;
     $ptemp2=null;
    endif;      

    # в начало
    if($p!=1 && $ptemp!=1 && $ptemp!=2):
     $prevp="<span id='first_page_link'><a href='news.php?n=$n&p=1' class='first_page_link' title='В начало'><<</a></span> ";
    else:
     $prevp=null;
    endif;  

    #в конец 
    if($p!=$total && $ptemp2!=($total-1) && $ptemp2!=$total):
     $nextp=" ... <span id='first_page_link'><a href='news.php?n=$n&p=".$total."'".$total."' class='first_page_link'>$total</a></span>";
    else:
     $nextp=null;
    endif;

    print "<br>".$prevp.$ptwoleft.$poneleft.'<span class="num_page_not_link"><b>'.$p.'</b></span>'.$poneright.$ptworight.$nextp; 
    print "</div>";
endif;
?>

file.txt:

Строка 1
Строка 2
Строка 3
Строка 4
Строка 5
Строка 6
Строка 7
Строка 8
Строка 9
Строка 10
Строка 11
Строка 12
Строка 13
Строка 14
Строка 15
Строка 16
Строка 17
Строка 18
Строка 19
Строка 20