Эта тема на forum.dklab.ru


Chris: значение переменной (текст) выходит за экран.
Добрый день (хотя для кого-то и вечер, а может и ночь).

Я создаю свою ленту новостей, ну и в ней несколько переменных: date, title, text, poster, img
Значение их загоняется через админку в MySQL.
Затем простым запросом выводится всё это на страницу.

Для форматирования текста, были созданы bb коды, чтобы выделять жирным, курсив, цвета, подчёркивание, вставка рисунков, линков, вставка кода. При помощи регулярных выражений (preg_replace + array), я делаю замену этих bb тэгов на html эквивалент, чтобы высвечивалось как нужно.

Вот это было введение. А теперь сам баг заключается вот в чём:
Обработанный текст (обработаный preg_replacе'oм) находится в переменной $text, я его вывожу через print и заключаю в таблицу. При просмотре в IE, Mozilla, Konqueror на полноэкрааном режиме в 1024х768 всё нормально... При переходе в режим 800х600, или уменьшении размера окна, появляется горизонтальный скроллбар. В опере 7,54 (linux), 8,0b (win32) всё нормально при любом расширении и открытии окна.

Думал что у меня скривились руки при составлении таблицы тогда заключил я $text в таблицу с размером 50%: и на странице новости выстроились в 3 колонки, и этот же скроллбар остался.
Тогда я решил использовать <span> <div> и css, чтобы создать и ограничить этот $text по ширине... не получилось.

Как это выглядит? Текст который провоцирует горизонтальный скролл?
1 взять картинку в 1500px в ширину (не высоту)
2 написать небольшой текст под ней
3 открыть в браузере не IE6, чтобы картинка не была уменьшена.

Ну вот на этом примере, я подумал, чтобы могло породить это?
1 картинка больших размеров в одной из новости на странице
2 большая линка

1 я ограничил показ новостей на 10 (в запросе поставил limit 10)
и в последних 10 новостях картинок не было

2 большая линка есть:
но она приписана таким образом: [ link_tag = big_link ] big_link [ /link_tag ] (как на форуме), таким образом после обработки preg_replace остаётся обычная html ссылка... если не обрабатывать, то появится скролл. (может таблица строется до обработки? поэтому и не уменьшается длинна строки?)

Есть ещё маленькая вещь, при загонке текста в таблицу я не пользуюсь addslashes, а значит stripslashes - думаю что это не должно никак влиять?

Посоветуйте как лечить, или куда смотреть?
Эльдар Мусин:
Так как никогда не встречался с этой проблемой, то не знаю какую часть кода выкладывать... если что то заинтересует отдельно, то скажите я покажу.
Заранее спасибо...
PS: Chris это я
Евгений Галашин:
Chris, простите, конечно, но при чём тут PHP? Сначала отладьте HTML, чтобы ничего не разъезжалось, а потом выводите в него правильный HTML. В чём проблема-то?

http://ln.com.ua/~openxs/articles/smart-questions-ru.html
http://phpfaq.ru/na_tanke
Эльдар Мусин:
Евгений Галашин
На самом деле мне нужно научиться говорить по русски сначало, точнее правильно выражаться...

вот кусок построения таблицы новости заключённый в while: (декоратив был удалён: cellpadding, borders, colors...)

<table width="100%">
<tr>
<td width="150"><?php print($news_date); ?></td>
<td><div style="width:100%;"><?php print($news_title); ?></div></td>
<td width="100"><?php print($news_theme); ?></td>
</tr>
<tr>
<td width='100%' colspan='3'><?php echo(preg_replace($pattern, $replacement, $news_text)); ?></td>
</tr>
<tr>
<td width="100%" colspan="3"><?php print("$ind_source, $news_source, $news_author"); ?></td>
</tr>
</table>

и вот эта таблица создаёт скролл?
Эльдар Мусин:
Ах да, забыл сказать что я попробовал просто присвоить: $news_text="text"
это было отображено корректно без горизонтального скролла.
затем я решил присвоить $news_text="text text text ... text text text" (так чтобы было как миниму строк 5)
это было отображено так же корректно без горизонтального скролла.

но с $news_text значение которого новость в таблице - былазит за границы
Евгений Галашин:
http://phpfaq.ru/na_tanke
Вы вообще понимаете, что PHP не связан с тем, что отображается в броузере? Сохраните неправильно отображаемую страницу и поправьте так, чтобы она отображалась правильно, потом поправть скрипт так, чтобы он выводил привильный HTML.

(декоратив был удалён: cellpadding, borders, colors...)
И вообще, табличная вёрстка -- это пережиток. см., например, http://www.stuffandnonsense.co.uk/archives/css_hold_the_front_page.html
Эльдaр Мусин:
Евгений Галашин
спасибо

Эта тема на forum.dklab.ru