На этот раз мне пришлось попотеть не один час, решая эту задачу, но, к сожалению, ничего путёвого не вышло
Требуется сделать постраничный вывод текста.
Цель: Текст должен быть ограничен $maxkol символов, с сохранением разделения на абзацы.
С нумерацией я и сам разобрался, а вот с УМНЫМ делением страницы пришлось туговато ...
Номер страницы передаётся браузеру через адресную строку.
Мы имеем переменную $text с текстом всей статьи.
План действий такой:
1. Разбиваем текст по параграфам
$par = explode ("((((", $text);
(((( — любой набор символов перед
2. Ограничиваем кол-во параграфов ($max), учитывая № страницы($page), загоняем результат в $text2
$nom=$page*$max;
for ($i=($page-1)*$max; $i<$nom; $i++){
$text2 =$text2." ".$par["$i"];}
3. Проверяем на кол-во символов
$slova = explode (" ", $text2);
$ctr=count($slova);
if ($ctr<$maxkol)
4. И увеличиваем $max на 1, если кол-во символов меньше заданного
{$max++;}
5. Как теперь прогнать всё это с новым значением $max с сохранением нового значения, для последующего использования при обращении к «другой странице»?
Я пытался использовать «while», но, скорее всего, у меня маловато опыта (на последней странице происходит зацикливание(при большом $maxkol) + новое значение $max игнорируется при обработке другой страницей):
$maxkol=200;
$ctr=0;
$par = explode ("((((", $text);
$max=0;
while ($ctr<$maxkol2) { $max++; $text2=\'\';
$nom=$page*$max;
for ($i=($page-1)*$max; $i<$nom; $i++){
$text2 =$text2." ".$par["$i"];}
$slova = explode (" ", $text2);
$ctr=count($slova);
}
echo "$text2";
.................
Читал кое-что про «do» , но возникли проблемы с синтаксисом.
В результате должен получиться текст немного больше заданного, но с сохранением форматирования по абзацам + новая страница должна начинаться с того места, где закончилась предидущая.
Помогите, пожалуйста, т.к. идея есть, а осуществить её не получается.
Возможно, кто-то предложит свой вариант решения «Цели» — буду очень благодарен.