|
|
|
| Проблемка...
Пример постраничной навигации:
http://softtime.ru/scripts/pager.php
<?php
// Имя файла
$filename = "text.txt";
// Число позиций на странице
$pnumber = 3;
// Открываем файл для чтения
$bufer = file_get_contents($filename);
// Находим все строки при помощи регулярного выражения
preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U",
$bufer,
$out,
PREG_PATTERN_ORDER);
// Формируем промежуточный массив
for($i = 0; $i < count($out[1]); $i++)
{
$temp[] = trim($out[2][$i]);
}
// Проверяем передан ли номер текущей страницы
if(isset($_GET['page'])) $page = $_GET['page'];
else $page = 1;
// Число страниц
$total = count($temp);
$number = (int)($total/$pnumber);
if((float)($total/$pnumber) - $number != 0) $number++;
$start = (($page - 1)*$pnumber + 1);
$end = $page*$pnumber + 1;
if($end > $total) $end = $total;
// Выводим содержимое страниц
for($i = $start; $i < $end; $i++)
{
echo $temp[$i]."<br>";
}
// Постраничная навигация
for($i = 1; $i <= $number; $i++)
{
// Если это произвольная страница
if($i != $number)
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."] ";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a> ";
}
}
// Если это последняя страница заменяем последнюю цифру
// максимальным числом позиций в массиве $temp
else
{
if($page == $i)
{
echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."] ";
}
else
{
echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
(($i - 1)*$pnumber + 1)."-".($total - 1)."]</a> ";
}
}
}
?>
|
Как я понимаю она будет работать только если в файле структура
1 Программирование
2 Программирование на PHP
3 Программирование на JavaScript
4 Программирование на ASP.NET
5 Программирование на Java
6 Программирование на Perl
7 Программирование на C++
8 Программирование на Pascal
9 Программирование на Fortran
10 Программирование на Assembler
А у меня задача иначе... я обрабатываю не файл $filename = "text.txt";
А переменную $text в которой находиться текст с тегами (типа <br/> <p> </p> и т.д.) он может быть и как показано выше и просто одной строкой, мне нужно с ним сделать навигацию, при этом чтобы не было кусков тегов, на одной странице <b а на другой r/>
Если кто поможет, буду благодарна! | |
|
|
|
|
|
|
|
для: FialkO
(20.11.2007 в 22:09)
| | А по какому признаку этот сплошной текст будет разбиваться на страницы?
По числу символов?
Т.е. нам нужно определить попадает ли 400 символ внутрь тега.
<?
for($i=400;$i>0;$i--){
if($text[$i] == '<'){
// мы внутри тега, соответственно окончание страницы ставим перед этим символом
$endOfPage = $i-1;
break;
}
if($text[$i] == '>'){
$endOfPage = 400;
break;
}
}
$page1 = substr($text,0,$endOfPage);
?>
|
| |
|
|
|