Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 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 Яндекс.Метрика Яндекс цитирования