Помощник
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]() |
![]()
Сообщение
#1
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
Встала проблема оптимизации системы. При разборе и фильтрации входящего от пользователя HTML около 80% затраченных ресурсов приходится на проставление переносов в длинные слова. Расстановка переносов нужна пержде всего для того, чтобы в случае бесконечнодлинной непрерывной последовательности символов, дизайна сайта не "поехал".
На сегодня алгоритм выглядит так:
Как видно, очень ресурсоемко. К сожалению я не смог придумать ничего лучше ![]() 1. Переносить слова нужно именно при помощи спецсимвола ­ - поскольку для пользователей с разными размерами мониторов, строки должны переносится по-разному. 2. Замена регуляркой типа [a-z0-9]{50} - невозможна. Поскольку последовательность 111111111<a href="3">1111111111</a>111111 также непрерывна. 3. Пункт 2 невозможен еще и по той причине, что если встречается спецсивол типа " , его нельзя разрывать т.е. нельзя вставить ­ вовнутрь ". 4. Внутри тега textarea такая замена длинных строк не нужна. |
|
|
||
![]() |
![]()
Сообщение
#2
|
|
Любитель![]() Группа: Eleanor user Сообщений: 463 Регистрация: 2010-10-17 Репутация: ![]() ![]() Всего: нет ![]() |
Александр, может такой вариант было проще реализовать на джаве?!
|
|
|
||
![]() |
![]()
Сообщение
#3
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
Ну предложите решение на java... Даже не знаю...
|
|
|
||
![]() |
![]()
Сообщение
#4
|
|
Eleanor developer![]() Группа: Администраторы Сообщений: 5 261 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: ![]() ![]() Всего: 67 ![]() |
Появился интересный вариант с css - word-wrap:break-word http://htmlbook.ru/css/word-wrap
Кто сможет потестировать на кроссбраузерность? |
|
|
||
![]() |
![]()
Сообщение
#5
|
|
Опытный![]() Группа: Бета-тестеры Сообщений: 705 Регистрация: 2009-06-02 Из: Житомир Репутация: ![]() ![]() Всего: 11 ![]() |
По описанию, опера не поддерживает... обидно, если будет, время, лично проверю...
На опере 10 работает, если не указывать размер блока, то он по дефолту под розрешение монитора.. В качестве переноса используется символ ">" Сообщение отредактировал termit - 2010-10-27, 0:08 |
|
|
||
Гость_viachet_* |
![]()
Сообщение
#6
|
|
Гости ![]() |
Правильнее будет нагрузить этой задачей браузер пользователя, и текст в этом случае с сервера в первозданном виде приходить будет
Самый верный способ пока - это использовать для этих целей javascript. CSS правила работают не везде. Есть крохотный jquery плагин на 20 строчек , который добавляет в уже готовый текст на стороне клиента, в браузере "возможные переносы" в текст |
|
|
||
![]() ![]() |
![]() |
Текстовая версия | ![]() ![]() ![]() ![]() |