Пишу сейчас онлайн-читалку для книг FB2 на PHP, чтобы прямо из браузера можно было бы читать. Нарыл XSLT-шаблон, который конвертирует формат FB2 в XHTML. В результате получилась одна большая строка, с помощью echo можно вывести всю книгу на одну страницу целиком. Это, разумеется, не дело, и я пытаюсь разбить эту строку на фрагменты. Вот, собственно говоря, ключевой кусок кода:
$a=transform("example.fb2", "FB2_22_xhtml.xsl");
$tok= explode("</div>",$a);
$x = $_GET[p];
$y = ($x-1) * 20;
?>
<table width="70%" border="1" align="center" height="800" cellpadding="10">
<tr>
<td>
<?php
for ($i=$y; $i<($y+20); $i++) {
echo $tok[$i]." ";
}
?>
</td>
</tr>
</table>
Получившуюся огромную строку $a, представляющую собой книгу целиком, я разбил на массив $tok, представляющий собой отдельный абзац (там каждый абзац - это <div>), и пытаюсь этот массив выводить порциями в цикле, по 20 абзацей на странице. Параметр p - это уже «очеловеченный» номер получившейся страницы.
Недостаток этого метода - количество абзацев на странице каждый раз разный, а первая страница, на которой также присутствуют заглавие, картинка, - очень большая по величине страницы, и я это таким методом регулировать не могу. Но другого метода для разбиения книги придумать не могу. Есть ли у кого идеи, как можно разбить книгу более оптимальным способом?