Отправляет email-рассылки с помощью сервиса Sendsay

Вебстроительство. Форум !!!

Разделение страниц на подстраницы

Прими моё присутствие в твоей жизни, all!

Есть файлы содержащие html-код выводимого текста, но так как есть
очень большие статьи, то надо их разбить на части с определенным
максимумом символов по подстроке, допустим "<br>".
Я уже долбаюсь с кодом около двух дней и постоянно нахожу, что он
не универсален - то разрезает не так, то в тексте различные
<br>(<BR>), а также есть страницы с таким видом:

<br><P align=center><B>19 февраля.</B></P><br><P><STRONG>Лука.
</STRONG>На Луку полуденный ветер к урожаю яровых. Пекут пирожки с
луком. </P><br><P align=center><B>20 февраля.</B></P><br>
Как обрежет, так и остается на одной странице <B>19 февраля.</B>, а
другой все остальное :(

Прошу Вас посмотреть на него и добавить/исправить что-нибудь для
универсальности или дать другой работающий.
==============================код<?
$text=""; // текст, который надо разделять
{
if ($st=="") $st=1; // $st - номер части страницы
//$text=$txtart2;
$limit=3072; // примерный максимум символов
if (strlen($text)>=($limit*2)) // бить страницы размером больше лимита
{
$k=(strlen($text)-bcmod(strlen($text), $limit))/$limit; // вычисление количества
разделений страниц
for ($i=1; $i<=$k;$i++)
{
$c=$limit;
$kkh=strpos(substr($text, $c-strlen($text)),".<BR>"); // поиск подстроки
для прибавления к лимиту
$kkl=$c+$kkh;
$fext[$i]=substr($text,0,$kkl); // само разделение
if ($i==$k)
$fext[$i]=substr($text,0);//$fext[1];
$text=str_replace($fext[$i],"",$text); // удаление этого разделения
if (($fext[$i])=="")
$k=$i-1; // если в разделе уже нет слов, то уменьшение страниц
}
$stran="Страница ".$st."/".$k.":"; // показ ссылок на эти разделенные страницы
for ($i=1; $i<=$k;$i++)
$urli[$i]="http://nbyt.ru/articles.php?lng=".$lng."&pg=".$pg."&st=".$i;
// ссылку свою поставьте ;-)
for ($i=1; $i<=$k;$i++) // генерирование кода html ссылок
{
$kurli[$i]="&nbsp;<a href=\"".$urli[$i]."\"><u><b>".$i."</b></u></a>";
if ($i==$st) $kurli[$i]="&nbsp;".$i."&nbsp;";
if ($st!=1) $urli_pred="&nbsp;<a href=\"".$urli[$st-1]."\"><u><b>&nbsp;<-Пред.&nbsp;</b></u></a>";
else $urli_pred="&nbsp;<-Пред.&nbsp;";
if ($st!=$k) $urli_posl="&nbsp;<a href=\"".$urli[$st+1]."\"><u><b>&nbsp;След.->&nbsp;</b></u></a>";
else $urli_posl="&nbsp;След.->&nbsp;";
}
for ($i=1; $i<=$k;$i++)
{
$urla=$urla."".$kurli[$i];
if ($i==20) $urla=$urla."<br>";
}
$text1="<p align=\"center\">".$stran."<br>".$urli_pred.$urla.$urli_posl."</p>"."<p>".$fext[$st];
$text=strlen($fext[$st])."<br>".$text1;
}
}

==============================кодЗаранее благодарен.

Ответить   Fri, 3 Dec 2004 20:31:20 +0200 (#274580)