В самом деле - проклятие :). Доброго времени суток всем.
Опишу задачку. Имеется табличка оформляющая, скажем, комментарий пользователя по какому-нибудь творению, в общем комментарий: ****************************** * * * * * * * * * * * * * * * * * * * * * * * * * ** * * *ник * * * ** ** * * * *о себе * * ** * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * ****************************** * * * * * * * * * * * ** * * * * * * * * * * * * * ** * * * * * * * * * * * ** * * * * * * * * * * * * * ** * * * * * * * *комментарий * * * * * * ** * ** * * * * * * * * * * * * * * * * * * * ** * * * * * ** * * * * * * * * * * * * * * * * * * * ** * * * * * ** ****************************** Таким образом, если все нормально, то все собственно и нормально :). Таблица не едет, страничку не рвет. Но стоит человеку ввести в поле "фио" строку не содержащую ни одного пробела, пусть даже и допустимой длины (естественно, что все поля имеют такое ограничение), то ячейка [1, 1] растягивается и тащит вправо ячейку [1, 2], что сказывается и на ячейках [2, *]. В итоге табличка имеет уже не те размеры какие задумывались и вся страничка выглядит как после направленного взрыва :). Вопрос собственно в том, чтобы предотвратить такую катастрофу. Можно вставлять пробелы через каждые X символов, но не слишком приятно видеть свое отчество как-нибудь так: "Стани слав", не идет. Какие символы не дают визуальных разрывов строки, но дают знать броузеру, что строку можно перенести - высота таблицы не имеет ограничения. Какие варианты, господа? [s]Исправлено: Prisoner, 6:17 19-08-2004[/s] |
Цитата:
Возможен такой вариант: использовать знак переноса, чисто на воприятие строка не разбита, но перенесена, то есть: есть такая знаменитая фамилия Череззаборногозадерищенский, а если дальше ещё идёт Афанасий Матвеевич-то это слишком длинно, поэтому мы разрешаем максимум 20 символов в одной строке, и если в этой строке не последовало спейса, то ставим после 20 символа знак переноса "-" а всю остальную часть пишем с новой строки. Если же совсем углубиться в проблему, можно написать функцию, которая будет переносит по правилам русского языка, то есть по слогам (там вроде несложные правила ):biglaugh: (если такое ещё не написано) |
У меня была аналогичная проблема. С одной стороны наджо была не дать злым хакерам вставлять длинное-длинное слово и портить вид таблицы, с другой - надо было не разбивать длинные слова. В результате я разбиваю текст на слова и проверяю размер каждого(понятно, что 90 и 55 - это под размеры моей таблицы :)):
Код:
function string_display_value($value, $n=90) { |
Прошу пардона за оффтоп. Не могли бы вы пояснить последнюю строчку. Никогда не использовал такие конструкции.
Код:
return $value == '' ? '<br>' : htmlspecialchars($new_value); Код:
if($value=="") |
pauluss
Цитата:
|
Время: 22:12. |
Время: 22:12.
© OSzone.net 2001-