Forum Webscript.Ru
Программирование => PHP => Тема начата: AntiMozg от 02 Июля 2006, 00:01:00
-
В бан не отправлять - ибо не совсем о том, о чем пишут обычно :)
Столкнулся с задачей разбить текст постранично в зависимости от его, текста, количества. Проблем не было бы, будь этот текст без форматирования (бишь HTML теги, списки), да еще и создаваемого автоматом в Java редакторе, через админпанель сайта.
Как быть? Количесчтво абзацев не посчитать - код мешает. Стандартизировать тексты - мечта, при этом несбыточная - заказчик не желает. А длинные списки ему, между тем, не нравятся.
Вот такая проблемка. Сижу и тупо пялюсь - ничего в голову не приходит...
Спасибо заранее :)
-
Есть идейка, но кажись глупая, что первое в голову вбрело :)
Делаеш автоматический пре-вью, тоесть запускаеш текст а с помощи Java-Script узнаеш вусоту страници, так пусть скрипт на PHP и мучает пока не аптемизирует под даный текст, разбивку на страници, сохраняеш полученые даные и пользуешся ими :)
-
Я бы бегал по тексту посимвольно и считал символы, которые не стоят в тегах. Типа на < подсчет прекращается, на > — возобновляется.
-
hanslinger
Если уж на то пошло, то проще сразу теги повырезать, посмотреть, гле делать разрывы, затем применить схему на оригинальном тексте.
Но хочется чего-то красивее.
-
Какую схему? Если уж вырезать, то надо запоминать длину каждого вырезанного куска, а нафик оно надо.
-
Весь прикол, что подсчетом символов вы нечего не добьетесь, так как символы разные по ширине, также возможно, что есть разные сшрифты с разними размерами, да еще плюс перенос слов, тут прийдется сумашедшую вычислительную машину делать для подщета всего этого.
Как уже предлогал, я вижу в этом решение, тоесть выводить текст на сраницу с помощью метода "разделяй и властвуй" и проверят скоко текста вывелось, с помощи Java-Script отпровляет высоту, если много -- делим на 2, если мало то добовляем половину поделеного.. и таким методом подходим к границе допуснимого размера.
-
Kneaz
Бред.
-
hanslinger
Тогда предложи лучше?
-
Господа, а не логичнее исходить из содержания, нежели из объемов? ;)
-
Исходя из содержания, сегодня думал над структурой со встроенными якорями, что-то типа:
Текст, текст, текст.
Текст, текст, текст.
Текст, текст, текст.
Таким образом человек в любом месте сможет всунуть подобный коммент, дав железке понять, что тут надо оборваться.
К тому же, если делать так - придется сначала эти комменты в тексте посчитать и в зависимости от наличия вывести кол-во страниц доступных к просмотру, ну а если не обнаружится - вовсе не выводить.
Буду думать как реализовать, потому что готового решения по этому вопросу у меня нет. Если у вас есть - будьте так добры :)
-
CGVictor
AntiMozg и я написали почему подсчет символов не прокатывает.
ну а от hanslinger хотел бы услышать причину такого ответа, а не мнение, что в моей версии тебя не устраиват, админ сайта правит текст а потом жмет на кнопку на пару минут(в зависимо от текста) идет расфосовка текста, а по полученым даным мы эти страници показываем посетителем сайта, причем при моей врсии мне всеравно : есть там JavaScript или нет, или тому подобного, что может влиять на размер страници.
-
Kneaz
Ты написал не «почему подсчет символов не прокатывает», а ахинею. Подумай, например, что произойдет, когда пользователь решит изменить размер окна браузера.
AntiMozg
[p]strpos[/p]
[p]preg_match[/p] + PREG_OFFSET_CAPTURE
-
hanslinger
Ухх, да функции то поиска и подсчета где-то слышал ;), но все равно спасибо.
Мне главное распечатать От page2 и До page3 как бы - вот где я спотыкаюсь :)
-
[p]substr[/p] =)
-
hanslinger
Подумай, например, что произойдет, когда пользователь решит изменить размер окна браузера.
Подумал, какраз об этом, и что при подсчете символов нечего не получится тоже по тойже причине.
То, что с якорями AntiMozg будет делать я хотел довести до афтомотизма, тоесть даеш ограничение по высоте и PHP тебе их проставит.
А проблема с изменением размера окна браузера, под всех не угодиш, а выбераеш оптемальный вариант, как и на любом сайте.
-
AntiMozg
$text= // подставляеш свой текст
$pattern = \'/(.+?)/\';
preg_match($pattern, $text, $matches);
$matches[1] // твой кусок текста
-
[OFF]прибейте уже кто-нибудь[/OFF]