Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > PHP / MySQL

PHP / MySQL Создание динамических Веб-ресурсов

Ответ
 
Опции темы
Старый 14.09.2010, 17:36   #1
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 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
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Разбиение текста на страницы

Размер файла какой? Он часто видоизменяется? Где и как его модифицируют?
Можно разбитый на части хранить.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Разбиение текста на страницы

Я, наверное, буй, но делаю тупо explode'ом.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 14.09.2010, 19:49   #4
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Разбиение текста на страницы

Суть такова:
1) Файл - это текст книги, соответственно не изменяется.
2) Чувак заходит на сайт, выбирает сколько символов на страницу ему показывать.
3) Сайт разбивает текст на страницы по лимиту символов.
(Offline)
 
Ответить с цитированием
Старый 15.09.2010, 12:44   #5
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Разбиение текста на страницы

блин. Ну вобще накладно каждый раз вжирать всю книгу. Осема накладно.
Но раз чувак риальни сам задаёт кол-во слов то тут уже ничего не попишешь.
Система проста и дубова:
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 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
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Разбиение текста на страницы

Randomize, не по словам лимит задаётся, а по количеству символов. Проблема только в том, что в UTF-8 каждый символ занимает не один байт, а от 1 до 4.
(Offline)
 
Ответить с цитированием
Старый 17.09.2010, 13:18   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Разбиение текста на страницы

Ну если криетрии не строгие, то лучше прибегнуть к пдф, либо дать им скачать пдф, либо выводить его в броузере - что имхо лучший варриант, т.к. есть такая штука как cache.
Используя html2ps можно конвертить на лету любой html формат, хоть сплошной текст, в pdf, и в будущем выдавать его в броузере, в хедере прописать cache - public и т.п. в итоге, те кто открывал книгу уже, следующий раз, она не будет скачаваться снова, а просто перезагрузиться с локального кэша.
(Offline)
 
Ответить с цитированием
Старый 17.09.2010, 13:34   #8
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Разбиение текста на страницы

PDF? Sribd'ом что ли (или чем-то подобным) ? Я считаю, что это нет пути.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 17.09.2010, 14:12   #9
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Разбиение текста на страницы

Ребята, спрячьте свою фантазию, я wap сайт делаю. Тут даже JavaScript надо избегать для совместимости, а вы уже в pdf зарулили.
(Offline)
 
Ответить с цитированием
Старый 17.09.2010, 15:02   #10
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Разбиение текста на страницы

дак что. Предварительно текст рабить не?
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Разбиение текста на страницы

Дело в том, что пользователь сам будет выбирать сколько символов на страницу ему показывать.
(Offline)
 
Ответить с цитированием
Старый 18.09.2010, 10:36   #12
Trazzy
Разработчик
 
Аватар для Trazzy
 
Регистрация: 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
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Разбиение текста на страницы

2Fake, если в твоём коде заюзать mb_strlen(), то он будет работать и для UTF-8. Но мы тут обсуждаем как сделать так, чтобы не парсить весь текст постоянно.
(Offline)
 
Ответить с цитированием
Старый 19.09.2010, 23:28   #14
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Разбиение текста на страницы

Слушай, а чего ты паришься о таких мелочах, я понимаю ты пишешь для wap, но php выполняет все операции на сервере, и на скорости это не сильно отражается. Дык, почему бы не забить? Если так подумать, в тех же банковских транзакций процессов в уйму раз больше, там и постоянные запросы на другие сервера, ожидание ответов, обработка, разбиение тупых и длинных стрингов, парсить всего-чего приходиться. А ведь покупают, в смысле пользуются операциями оплаты в европе так же часто как и меняют носки, дык, стоит ли того париться насчёт маленькой фигнюшки, когда сомнительно что загрузка книжки - это не так и ёмко..
(Offline)
 
Ответить с цитированием
Старый 20.09.2010, 00:24   #15
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Разбиение текста на страницы

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com