|
PHP / MySQL Создание динамических Веб-ресурсов |
14.09.2010, 17:36
|
#1
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Разбиение текста на страницы
Имеется файл с текстом в кодировке utf-8.
Нужно средствами PHP выводить этот файл в браузер с постраничной навигацией.
Очевидный выход: file_get_contents() -> mb_substr()
Проблема: приходится считывать весь файл в оперативу.
Если бы кодировка была не мультибайтной, то решением было бы: fopen() -> fseek() -> fread()
А что делать в моём случае - я не знаю.
|
(Offline)
|
|
14.09.2010, 17:52
|
#2
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Разбиение текста на страницы
Размер файла какой? Он часто видоизменяется? Где и как его модифицируют?
Можно разбитый на части хранить.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
14.09.2010, 19:00
|
#3
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Разбиение текста на страницы
Я, наверное, буй, но делаю тупо explode'ом.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
14.09.2010, 19:49
|
#4
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Разбиение текста на страницы
Суть такова:
1) Файл - это текст книги, соответственно не изменяется.
2) Чувак заходит на сайт, выбирает сколько символов на страницу ему показывать.
3) Сайт разбивает текст на страницы по лимиту символов.
|
(Offline)
|
|
15.09.2010, 12:44
|
#5
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Разбиение текста на страницы
блин. Ну вобще накладно каждый раз вжирать всю книгу. Осема накладно.
Но раз чувак риальни сам задаёт кол-во слов то тут уже ничего не попишешь.
Система проста и дубова:
1) file_get_contents
2) explode по пробелам
3) -> page * words_perpage .. page * words_perpage + words_perpage
* при страницах начиная с 0
Православный вариант для тру пацанов:
И заранее заготовленые txt файлы или записи в БД нужного размера выплёвывать.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
15.09.2010, 16:24
|
#6
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Разбиение текста на страницы
Randomize, не по словам лимит задаётся, а по количеству символов. Проблема только в том, что в UTF-8 каждый символ занимает не один байт, а от 1 до 4.
|
(Offline)
|
|
17.09.2010, 13:18
|
#7
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Разбиение текста на страницы
Ну если криетрии не строгие, то лучше прибегнуть к пдф, либо дать им скачать пдф, либо выводить его в броузере - что имхо лучший варриант, т.к. есть такая штука как cache.
Используя html2ps можно конвертить на лету любой html формат, хоть сплошной текст, в pdf, и в будущем выдавать его в броузере, в хедере прописать cache - public и т.п. в итоге, те кто открывал книгу уже, следующий раз, она не будет скачаваться снова, а просто перезагрузиться с локального кэша.
|
(Offline)
|
|
17.09.2010, 13:34
|
#8
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Разбиение текста на страницы
PDF? Sribd'ом что ли (или чем-то подобным) ? Я считаю, что это нет пути.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
17.09.2010, 14:12
|
#9
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Разбиение текста на страницы
Ребята, спрячьте свою фантазию, я wap сайт делаю. Тут даже JavaScript надо избегать для совместимости, а вы уже в pdf зарулили.
|
(Offline)
|
|
17.09.2010, 15:02
|
#10
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Разбиение текста на страницы
дак что. Предварительно текст рабить не?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
17.09.2010, 20:27
|
#11
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Разбиение текста на страницы
Дело в том, что пользователь сам будет выбирать сколько символов на страницу ему показывать.
|
(Offline)
|
|
18.09.2010, 10:36
|
#12
|
Разработчик
Регистрация: 24.11.2008
Адрес: UA
Сообщений: 504
Написано 110 полезных сообщений (для 225 пользователей)
|
Ответ: Разбиение текста на страницы
Когда-то тоже мудохался с подобным..
..обязательно UTF-8? с виндовской кодировкой все проще..
<?php //... $ch_from=0; $ch_to=100; $cont=file_get_contents('read.txt'); echo substr($cont, $ch_from, $ch_to); //... ?>
__________________
Уважай собеседника, а лучше подари ему +
|
(Offline)
|
|
19.09.2010, 02:29
|
#13
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Разбиение текста на страницы
2Fake, если в твоём коде заюзать mb_strlen(), то он будет работать и для UTF-8. Но мы тут обсуждаем как сделать так, чтобы не парсить весь текст постоянно.
|
(Offline)
|
|
19.09.2010, 23:28
|
#14
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Разбиение текста на страницы
Слушай, а чего ты паришься о таких мелочах, я понимаю ты пишешь для wap, но php выполняет все операции на сервере, и на скорости это не сильно отражается. Дык, почему бы не забить? Если так подумать, в тех же банковских транзакций процессов в уйму раз больше, там и постоянные запросы на другие сервера, ожидание ответов, обработка, разбиение тупых и длинных стрингов, парсить всего-чего приходиться. А ведь покупают, в смысле пользуются операциями оплаты в европе так же часто как и меняют носки, дык, стоит ли того париться насчёт маленькой фигнюшки, когда сомнительно что загрузка книжки - это не так и ёмко..
|
(Offline)
|
|
20.09.2010, 00:24
|
#15
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Разбиение текста на страницы
MoKa, собственно, я так и сделал и забил. Но всё таки решил спросить булку. Может есть какое-то решение для этого, а я его не знаю.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:42.
|