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

Форум PHP

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

 

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

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

тема: Неустойчивая работа скрипта.

Сообщения:  [1-2] 

 
 автор: Loki   (28.11.2006 в 14:24)   письмо автору
 
   для: Владимир55   (28.11.2006 в 13:28)
 

все правильно. на входе у вас ожидается текст, а вы пытаетесь туда всунуть html. Используйте nl2br непосредственно перед выводом на экран.

   
 
 автор: Владимир55   (28.11.2006 в 13:28)   письмо автору
 
 

Скрипт для разделения текста на части, код которого я приведу ниже, содержит всего несколько строк. И, в принципе, он работает. Но неустойчиво, ибо обрабатывает разные тексты по разному. Чтобы локализовать ошибку я тестировал его таким текстом:
$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>' ;

   

Сообщения:  [1-2] 

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

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