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

PHP: Сканирование папки и листинг текстовых файлов

Указываем количество файлов на странице, делаем пагинацию, распределяем данные из текстового файла в шаблон php.

index.php

<?php
require_once 'functions.php';

function getLinkName($file)
{
 $lines = file_get_contents($file);
 $lines = explode("\n", $lines);

 return $lines[0];
}

define('FILESONPAGE', 5);//количество файлов на странице
$files = array_values(myscandir('./' . $dir));//листинг файлов
$count = count($files);//получаем количество файлов
$page = intval($_GET['page']);//получаем номер страницы
//перекидываем на первую страницу, если вышли за пределы
$page = (($page - 1) * FILESONPAGE > $count || $page <= 0) ? 1 : $page;
$start = ($page - 1) * FILESONPAGE;
$end = $start + FILESONPAGE < $count ? $start + FILESONPAGE : $start + $count - $start;
$maxPage = ceil($count / FILESONPAGE);
?>

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <title>Проект №1</title>
</head>
<body>
<ul>
 <?
 for ($i = $start; $i < $end; $i++) {
 echo '<li><a href="' . pathinfo($files[$i])['filename'] . '">' . getLinkName($dir . '/' . $files[$i]) . '</a></li>';
 }
 ?>
</ul>
<?
if ($page > 1) echo '<a href="?page=' . ($page - 1) . '">назад</a>';
$j = 0;
for ($i = $page + 1 <= $maxPage ? $page - 1 : $page - 2; $i <= $maxPage; $i++) {
 if ($i > 0 && $j < 3) {
 if ($i == $page) echo '<b>' . $i . '</b>';
 else
 echo '<a href="?page=' . $i . '">' . $i . '</a>';
 $j++;
 }
 if ($j > 3) break;
}
if ($page < $maxPage) echo '<a href="?page=' . ($page + 1) . '">вперед</a>';
?>
</body>

functions.php

<?
$dir = 'data/';

function myscandir($dir, $sort = 0)
{
 $list = scandir($dir, $sort);
 if (!$list) return false;
 if ($sort == 0) unset($list[0], $list[1]);
 else unset($list[count($list) - 1], $list[count($list) - 1]);
 return $list;
}

file.php

<?php
require_once 'functions.php';
$files = array_values(myscandir('./'.$dir));
for($i = 0; $i < count($files); $i++) {
 if(pathinfo($files[$i])['filename'] == $_GET['file']) $file = $files[$i];
}
if(!$file) exit('File not found');
$lines = @explode("\n", file_get_contents($dir.'/'.$file));
?>

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <title>Проект №1</title>
</head>
<body>
<h1><?=@$lines[0]?></h1>
<p><?=@$lines[1]?></p>
<p><?=@$lines[2]?></p>
</body>

Скачать пример