| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Тексты > Работа со строками |
| Автор: hexen 14.10.2007, 13:02 |
| Уважаемые программисты подскажите пожалуста такую вещь. Проблема следующая. текст набранный в форме <textarea></textarea> где я ставил пробелы в начале строки и на новых обзацах. сохранил его в БД и когда хочу текст вывести как новость на сайте. пробелы в начале строки отсуцтвуют. добавил функцию nl2br() помогает но ставит только <br>. А где пробелы делись? Где их взять? хотя если этот текст вывести в форме опять то весь текст выглядит как нужно. что делать направьте, подскажите. Бьюсь второй день. |
| Автор: SelenIT 14.10.2007, 15:32 | ||
Остались в исходном коде HTML, при рендеринге проигнорированы, как всегда... Вариант 1: выводить текст в теге <pre></pre>, без nl2br(). Вариант 2: регулярками заменять подряд идущие пробелы на неразрывные, напр.
Вариант 3+: см. первую тему внизу страницы. |
| Автор: sTa1kEr 14.10.2007, 18:36 | ||
Я бы рекомендовал заменять не на " ", а на "\xA0" |
| Автор: SelenIT 14.10.2007, 18:55 |
| sTa1kEr, а какие еще плюсы "\xA0", кроме экономии трафика? А вдруг там (маловероятно, конечно, но чем шут не чертит...) окажется KOI-8? |
| Автор: hexen 14.10.2007, 18:58 | ||||||
вот что выводит на странице вместе с текстом \xA0как\xA0дела\xA0прохо Вобще смотрю на форуме винграда сообщения выводятся как мне нужно. А как из обк. формы такое слепить? Добавлено через 10 минут и 43 секунды Вобщем парни, спасибо большое за помощь, сделал сам и получил результат, что нужен. function nls2p($str) { for ($i = 0;$i < strlen($str); $i++) { if(' ' == $str{$i}){ $strA{$i} .=' ';} else{ $strA{$i} .= $str{$i};} } $str = implode(NULL,$strA); return nl2br($str); } <td><?=nls2p(stripslashes($edit->news_text))?></td> |
| Автор: sTa1kEr 14.10.2007, 19:13 | ||
Не надо декодировать символы. И, имхо, более правильный стиль. Просмотрите как нибудь html код, где в качестве отступов используется... Это же просто издевательство над html.
А вдруг там ASCII-7? Тогда вообще остается либо htmlentities(), либо сразу удавится, что бы не мучатся |
| Автор: hexen 14.10.2007, 19:16 | ||||
все там будет в норме, так как проверил на вывод, просто без небыло красной строки все по одному уровню. а теперь гуд. и никто небудет мучаться асобенно я. так как сервер мой, страница моя. СПС |
| Автор: SelenIT 14.10.2007, 19:35 | ||
Согласен. Вообще, имхо, правильнее всего использовать настоящие абзацы и text-indent... ;) Ни разу не видел на сайтах. А KOI-8 видел (правда, это было так давно...). Если сейчас точно нет в ходу кодировок, где 160-й символ занят чем-то "левым" - то у меня вопросов больше нет |