Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Постраничная навигация на файлах
 
 автор: FialkO   (20.11.2007 в 22:09)   письмо автору
 
 

Проблемка...
Пример постраничной навигации:
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."]&nbsp;";
      }
      else
      {
        echo 
"<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
             ((
$i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a>&nbsp;";
      }
    }
    
// Если это последняя страница заменяем последнюю цифру 
    // максимальным числом позиций в массиве $temp
    
else
    {
      if(
$page == $i)
      {
        echo 
"[".(($i - 1)*$pnumber + 1)."-".($total - 1)."]&nbsp;";
      }
      else
      {
        echo 
"<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
             ((
$i - 1)*$pnumber + 1)."-".($total - 1)."]</a>&nbsp;";
      }
    }
  }
?>



Как я понимаю она будет работать только если в файле структура
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/>
Если кто поможет, буду благодарна!

   
 
 автор: Axxil   (20.11.2007 в 22:14)   письмо автору
 
   для: 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);
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования