Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
define("PAGE_LENGTH",2000);
$text = join(file("./big_plain_text.txt")); // большой текст без тегов, с переводами строк
$numpages = ceil(strlen($text)/PAGE_LENGTH);
$page = Array(); $n = $i = 0;
while ($n<$numpages) {$page[$n++] = substr($text,$i,PAGE_LENGTH); $i += PAGE_LENGTH;}
$n = 0;
while ($n<$numpages-1){
$dot = 1+strpos($page[++$n],"."); // предполагается, что хотя бы одна точка найдётся
$page[$n-1] .= substr($page[$n],0,$dot);
$page[$n] = trim(substr($page[$n],$dot));
echo "[Page $n] <<<<<<<<{$page[$n-1]}>>>>>>>> [Length: ",strlen($page[$n-1]),"]<br><br>\n";
}
мj;yj по подробней как это реализовать2Kirgonh
LIMIT 5, 10
5 - кол-во записей на странице, начиная с 10 записи.
2Avtandil
Интересная реализация!
<br>
А есть ли возможности разбить текст по заголовкам?
<br>
<?php
// Создаем функцию с 2-мя обязательными
// и одним новым необязательным параметром
// с уже указанным значением по умолчанию
function separator($file, $notes, $limit=0){
// Загоняем всю инфу из файла в массив
$file = file($file);
// Получаем количество строк в файле
$q = sizeof($file);
// Делим кол-во строк на кол-во записей - получаем кол-во страниц
// ! Если число не делится ровно, оно округлится по верхней границе (с избытком)
// Для этого существует функция ceil()
// В дальнейшем нам не нужно ставить (int) перед переменной
$np = ceil($q/$notes);
// Если в адресной строке есть $page, значит
//нужно показать блок, соответсвующий значению $page
if(isset($_GET['page']))
{
// Для удобства переименуем $_GET['page'] в $page
$page = $_GET['page'];
// Если $page больше, чем кол-во страниц, показываем последний блок
if($page > $np) $page = $np;
// Если вдруг значение $page отрицательно - выводим первый блок
if($page <= 0) $page = 1;
// Формулы начальной и конечной строки блока, вычислены опытнам путем
$begin = $notes*($page-1);
$end = $notes*$page-1;
// Вывод данных
for($i=$begin; $i<=$end; $i++)
{
if(isset($file[$i])) echo $file[$i].'<br>';
}
}
// Если $page в адресной строке нет, то показываем 1-й блок
else
{
// Если количество строк в файле меньше или равно допустимому
// количеству, то просто выводим их и не паримся с постраничным
// выводом, ибо нефига...
if($q <= $notes)
{
for($i=0; $i<$q; $i++) {
echo $file[$i].'<br>';
}
// Дальнейшее выполнение функции бессмыслено (все возможное выведено), поэтому выходим
exit;
}
// А если больше, то выводим первый блок
else
{
for($i=0; $i<$notes; $i++)
{
echo $file[$i].'<br>';
}
}
}
// Вывод навигации
// Делаем пробел между выводимой информацией
// и навигацией :)
echo '<br>';
// Если страница не первая (иначе нет смысла выводить
// стрелки), то выводим стрелки "В начало" и "Предыдущая"
if(isset($_GET['page']) && $_GET['page'] > 1){
// Будет вернее писать $_SERVER['SCRIPT_NAME'], а не index.php, как было раньше
echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page=1><<</a> ';
$prev = $_GET['page']-1;
echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$prev.'><</a> ';
}
// Если параметр, ограничивающий длину выводимой
// навигации не установлен или равен нулю, то выводим
// навигацию как обычно
if($limit == '0'){
for($i=0; $i<$np; $i++){
if(isset($_GET['page']) && $_GET['page'] == $i+1) echo '['.($i+1).'/'.$np.']';
else echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.($i+1).'>['.($i+1).']</a> ';
}
}else{
// Самое интересное: ограничение выводимой навгиации
if(!isset($_GET['page'])) $page=1;
// Форумла начала "обрезанной" навигации (НОН)
$begin = $page-$limit;
// Формула конца "обрезанной" навигации (КОН)
$end = $page+$limit;
// Если НОН выходит за ноль, то можно не "обрезать" навигацию слева
if($begin <= 0) $begin = 1;
// Если КОН выходит за последнюю страницу, то можно не "орбезать" навигацию справа
if($end > $np) $end = $np;
// Если между 1-й страницей и НОН есть какие-то страницы, заменяем их на "..."
if($begin > 1) echo "...";
//Ну и сам вывод...
for($i=$begin; $i<=$end; $i++){
if(isset($_GET['page']) && $_GET['page'] == $i) echo '['.$i.'/'.$np.']';
else echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$i.'>['.$i.']</a> ';
}
// Если между КОН и последней страницей есть какие-то страницы, заменяем их на "..."
if($end < $np) echo "...";
}
// Вывод стрелок "Следующая" и "В конец"
if(@$_GET['page'] < $np){
$next = @$_GET['page']+1;
echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$next.'>></a> ';
echo '<a href='.$_SERVER['SCRIPT_NAME'].'?page='.$np.'>>></a> ';
}
}
// Ну и вызов функции
separator('file.txt', '10');
?>