forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PHP / MySQL (http://forum.boolean.name/forumdisplay.php?f=135)
-   -   Разбиение текста на страницы (http://forum.boolean.name/showthread.php?t=13347)

Phantom 14.09.2010 17:36

Разбиение текста на страницы
 
Имеется файл с текстом в кодировке utf-8.
Нужно средствами PHP выводить этот файл в браузер с постраничной навигацией.
Очевидный выход: file_get_contents() -> mb_substr()
Проблема: приходится считывать весь файл в оперативу.
Если бы кодировка была не мультибайтной, то решением было бы: fopen() -> fseek() -> fread()
А что делать в моём случае - я не знаю.

Randomize 14.09.2010 17:52

Ответ: Разбиение текста на страницы
 
Размер файла какой? Он часто видоизменяется? Где и как его модифицируют?
Можно разбитый на части хранить.

ABTOMAT 14.09.2010 19:00

Ответ: Разбиение текста на страницы
 
Я, наверное, буй, но делаю тупо explode'ом.

Phantom 14.09.2010 19:49

Ответ: Разбиение текста на страницы
 
Суть такова:
1) Файл - это текст книги, соответственно не изменяется.
2) Чувак заходит на сайт, выбирает сколько символов на страницу ему показывать.
3) Сайт разбивает текст на страницы по лимиту символов.

Randomize 15.09.2010 12:44

Ответ: Разбиение текста на страницы
 
блин. Ну вобще накладно каждый раз вжирать всю книгу. Осема накладно.
Но раз чувак риальни сам задаёт кол-во слов то тут уже ничего не попишешь.
Система проста и дубова:
1) file_get_contents
2) explode по пробелам
3) -> page * words_perpage .. page * words_perpage + words_perpage
* при страницах начиная с 0

Православный вариант для тру пацанов:
И заранее заготовленые txt файлы или записи в БД нужного размера выплёвывать.

Phantom 15.09.2010 16:24

Ответ: Разбиение текста на страницы
 
Randomize, не по словам лимит задаётся, а по количеству символов. Проблема только в том, что в UTF-8 каждый символ занимает не один байт, а от 1 до 4.

moka 17.09.2010 13:18

Ответ: Разбиение текста на страницы
 
Ну если криетрии не строгие, то лучше прибегнуть к пдф, либо дать им скачать пдф, либо выводить его в броузере - что имхо лучший варриант, т.к. есть такая штука как cache.
Используя html2ps можно конвертить на лету любой html формат, хоть сплошной текст, в pdf, и в будущем выдавать его в броузере, в хедере прописать cache - public и т.п. в итоге, те кто открывал книгу уже, следующий раз, она не будет скачаваться снова, а просто перезагрузиться с локального кэша.

ABTOMAT 17.09.2010 13:34

Ответ: Разбиение текста на страницы
 
PDF? Sribd'ом что ли (или чем-то подобным) ? Я считаю, что это нет пути.

Phantom 17.09.2010 14:12

Ответ: Разбиение текста на страницы
 
Ребята, спрячьте свою фантазию, я wap сайт делаю. Тут даже JavaScript надо избегать для совместимости, а вы уже в pdf зарулили.

Randomize 17.09.2010 15:02

Ответ: Разбиение текста на страницы
 
дак что. Предварительно текст рабить не?

Phantom 17.09.2010 20:27

Ответ: Разбиение текста на страницы
 
Дело в том, что пользователь сам будет выбирать сколько символов на страницу ему показывать.

Trazzy 18.09.2010 10:36

Ответ: Разбиение текста на страницы
 
Когда-то тоже мудохался с подобным..
..обязательно UTF-8? с виндовской кодировкой все проще..
PHP код:

<?php
//...
$ch_from=0;
$ch_to=100;

$cont=file_get_contents('read.txt');
echo 
substr($cont$ch_from$ch_to);
//...
?>


Phantom 19.09.2010 02:29

Ответ: Разбиение текста на страницы
 
2Fake, если в твоём коде заюзать mb_strlen(), то он будет работать и для UTF-8. Но мы тут обсуждаем как сделать так, чтобы не парсить весь текст постоянно.

moka 19.09.2010 23:28

Ответ: Разбиение текста на страницы
 
Слушай, а чего ты паришься о таких мелочах, я понимаю ты пишешь для wap, но php выполняет все операции на сервере, и на скорости это не сильно отражается. Дык, почему бы не забить? Если так подумать, в тех же банковских транзакций процессов в уйму раз больше, там и постоянные запросы на другие сервера, ожидание ответов, обработка, разбиение тупых и длинных стрингов, парсить всего-чего приходиться. А ведь покупают, в смысле пользуются операциями оплаты в европе так же часто как и меняют носки, дык, стоит ли того париться насчёт маленькой фигнюшки, когда сомнительно что загрузка книжки - это не так и ёмко..

Phantom 20.09.2010 00:24

Ответ: Разбиение текста на страницы
 
MoKa, собственно, я так и сделал и забил. Но всё таки решил спросить булку. Может есть какое-то решение для этого, а я его не знаю. :-D


Часовой пояс GMT +4, время: 17:55.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot