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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как большой текст с тегами разбить по страницам?

Сообщения:  [1-10]   [11-14] 

 
 автор: Лена   (13.09.2010 в 10:42)   письмо автору
1.6 Кб
 
   для: BlueWolf   (12.09.2010 в 17:44)
 

>знак "-" должен ставится в местах переноса слов
>Если допустим слово "Слово" в конце страницы заканчивается Сл , а в следуюющей начинается ово. То тут надо ставить чтобы скрипт ставил хотя бы знак "-".


Посмотрите вот эту тему , я когда-то била текст по словам.
В аттаче - функция, которая проставляет в любом тексте переносы.

  Ответить  
 
 автор: Kioshy   (13.09.2010 в 10:12)
 
   для: neadekvat   (13.09.2010 в 00:49)
 

тут вообще подчет символов мало играет роли ибо текст содержит html теги, поэтому оперировать надо функциями strlen, strpos, substr

  Ответить  
 
 автор: neadekvat   (13.09.2010 в 00:49)   письмо автору
 
   для: BlueWolf   (11.09.2010 в 20:04)
 

Стааарая-старая функция. Возможно, показывает скорее как делать не надо.
Сначала проверяем, если кол-во символов в тексте меньше допустимого - то просто выкладываем этот текст, если больше - то вызываем функцию. Три аргумента - весь текст, текущая страница (первая - 1, вторая - 2), кол-во символов на одной странице. Возвращает текст текущей страницы.

<?php
Function story_pages($text$page$max)
  {
    
$end_text '';
    
$local_page 1// локальные страницы, для вычислений
    
$array explode('.'$text);
    for (
$i 0$i <= (count($array) - 1); $i++) {
      if (
strlen($end_text) + strlen($array[$i]) <= $max) {
        
$end_text .= $array[$i] . '.';
      } else {
        if (
$local_page == $page) break; 
        ++
$local_page;
        --
$i// не теряем предложения
        
unset ($end_text); // начинаем с чистого листа
      
}
    }
    return 
$end_text;
  }

  Ответить  
 
 автор: Kioshy   (12.09.2010 в 23:30)
 
   для: Kioshy   (12.09.2010 в 23:27)
 

если же делать, просто высчитыванием позиции + обрезание текста, то возьми на вооружение tidy, дабы когда ты обрежешь там где не нужно, разбитые теги не перекрывали все остальное, tidy в этом случае починит за тебя сломанный html

  Ответить  
 
 автор: Kioshy   (12.09.2010 в 23:27)
 
   для: BlueWolf   (11.09.2010 в 20:04)
 

самый оптимальный вариант при добавлении в базу в редакторе текста , вставлять в текст разделительный тег, например как в Joomlа {Page Break} , при выводе считать количество разделителей, вытащить текст между разделителями и вывести так как тебе нужно

  Ответить  
 
 автор: sl1p   (12.09.2010 в 18:37)   письмо автору
 
   для: .....   (12.09.2010 в 18:22)
 

+1 лучше делить текст вручную :)

  Ответить  
 
 автор: .....   (12.09.2010 в 18:22)
 
   для: BlueWolf   (12.09.2010 в 17:44)
 

> большой текст с тегами хранящийся в базе
>слова делятся

и это ещё не вылезла проблема с тем что может вывести <h1>
но не вывести </h1>

  Ответить  
 
 автор: sl1p   (12.09.2010 в 17:49)   письмо автору
 
   для: BlueWolf   (12.09.2010 в 17:44)
 

ну дык проверяйте на наличие не словесного символа:)

  Ответить  
 
 автор: BlueWolf   (12.09.2010 в 17:44)   письмо автору
 
   для: Trianon   (12.09.2010 в 15:47)
 

знак "-" должен ставится в местах переноса слов
Если допустим слово "Слово" в конце страницы заканчивается Сл , а в следуюющей начинается ово. То тут надо ставить чтобы скрипт ставил хотя бы знак "-".
В идиале хотелось бы зделать так чтобы скрипт дописывал всё слово если даже оно выходит за рамки максимального на страницу.

  Ответить  
 
 автор: Trianon   (12.09.2010 в 15:47)   письмо автору
 
   для: BlueWolf   (12.09.2010 в 15:37)
 

кем ставился?
если скриптом - достаточно просто добавить его в echo .
Неясно лишь - зачем.

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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