|
| |
|
|
| |
для: Владимир55
(28.11.2006 в 13:28)
| | | все правильно. на входе у вас ожидается текст, а вы пытаетесь туда всунуть html. Используйте nl2br непосредственно перед выводом на экран. | |
| |
|
|
| |
|
|
| | Скрипт для разделения текста на части, код которого я приведу ниже, содержит всего несколько строк. И, в принципе, он работает. Но неустойчиво, ибо обрабатывает разные тексты по разному. Чтобы локализовать ошибку я тестировал его таким текстом:
$text = "Здесь семь различных слов для
проверки текста" ;
После "для" - перевод строки, а перед первым словом каждого абзаца пять пробелов.
На каждую страницу выводится только два слова. И получилась вот такая картина:
Текст страницы номер: 1
Здесь семь
Текст страницы номер: 2
различных слов
Текст страницы номер: 3
для
Текст страницы номер: 4
/> проверки
Текст страницы номер: 5
текста
Перед строкой 4 произошел перевод строки, отсутствующий в исходном тексте, а в самой этой строке видны остатки кода перевода строки.
Как показало детальное тестирование, это вызвано оператором nl2br . Но и без него тоже нельзя обойтись, ибо иначе весь текст сливается в одну строку.
Можно ли устранить эти дефекты? Или уже придется смириться с ними и править окончательный результат вручную?
(Полностью отходить от этого кода не хотелось бы, поскольку это наверняка потянет за собой еще какие-нибудь нюансы).
=============
$text_ish = file_get_contents("books/7.txt"); // Текст книги
$text = nl2br($text_ish); // вставляет перед переводами строк <br>.
// Разделяем книгу на страницы по $n_sl_str слов на каждой
$words=preg_split('/ /', $text, -1, PREG_SPLIT_NO_EMPTY);
$nof = 1 ; // Номер страницы по порядку
$n_sl_str = 2; // Количество слов на странице
do
{
// Формируем текст очередной страницы
$page = $nof - 1 ;
$new_text = "" ;
$start=$page*$n_sl_str;
for ($i=$start; $i < $start+$n_sl_str; $i++) $new_text.=$words[$i]." ";
$textstr = $new_text ;
echo "Текст страницы номер: " ;
echo $nof ;
echo '<br>' ;
echo $textstr ;
echo '<br>' ;
$nof++ ;
}
while ($words[$i]) ; // Прекращаем цикл, если вывод перестает быть истиной.
echo "Создано страниц: " ;
echo $nof - 1 ;
echo '<br>' ;
echo "Последняя ястраница: " ;
echo $textstr ;
echo '<br>' ; | |
| |
|
|
|