|
|
|||||
Теоретик и Практик
|
проблема с nl2br() и <textarea>
помогите, появилась проблема с использованием функции nl2br().
есть форма (с текстареа), в которой набирается текст с использованием синтаксиса для форматирования (например [Ж]жирний текст[/Ж]). Есть анализатор, который перед вставкой в базу заменяет теги этого форматирования на обычные ХТМЛ-теги (теги из примера меняются на <b>жирный текст</b> ). Все работает нормально. Дополнительно очень нужны и теги переноса строки, тоесть <br>. Строка перед анализом на синтаксис пропускается через эту функцию, но теги <br> почему-то не добавляются... Может проблема в том, что нажатие "Enter" в текстовом поле не вставляет символ переноса строки \n? Как вообще можно это реализовать (добавление тега <br> )? Есть конечно идея яваскриптом при нажатии "Enter" вставлять что-то типа [BR], который анализатором менять на <br>, но по моему это уже извращение, да и текст в поле засоряет... Кто-то что-то посоветует? Плиииииииииииииз!!! заранее благодарен |
|
|||||
"simple"
|
я делал так:
при вставке в базу данных заменял все нужные мне символы их комбинации на определённоё мною название в скобках... т.е. в дан случае: запись в БД: DEFINE ("NEWLINE","<BR>"); str_replace ( "\n", "[NL]", $message ); а при получении из БД echo ( str_replace ( "[NL]", NEWLINE, $message ) ); всё пашет |
|
|||||
"simple"
|
ну не знаю..
если тока ЕНТЕР не нажимаешь... а так давай кусок кода, отвечающий за это дело... мож там ошибка.. или сам поищи... у мя нормано находит... |
|
|||||
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
Теоретик и Практик
|
вот функция - анализатор синтаксиса:
function str2htm ($input_str,&$return_str) { $tags=array ( "" => "<B>", "" => "</B>", "" => "<I>", "" => "</I>", "" => "<U>", "" => "</U>", "[url=" => "<A HREF=", "[/URL]" => "</A>", "[EMAIL=" => "<A HREF=mailto:", "[/EMAIL]" => "</A>", "[IMG]" => "<IMG SRC=", "[/IMG]" => " border=0>", "[list]" => "<UL>", "[/list]" => "</UL>", "[list=1]" => "<OL>", "[/list=1]" => "</OL>", "[*]" => "<LI>", "]" => ">", // the last item in array; ); nl2br($input_str); // вот тут должны все \n меняться на br, это встроенная функция reset($tags); while($element=each($tags)) { if(strstr($input_str,$element["key"])===false) { continue; } else { $input_str=str_replace($element["key"],$element["value"],$input_str); } } $return_str=$input_str; } 1. вариант номер один: $input_str = 'test bold text test italic text'; str2htm ($input_str, &$return_str); echo $return_str; Ни так ни сяк не работает... Получая данные из текствого поля тоже не работает.... Последний раз редактировалось ihorko; 13.06.2002 в 04:07. |
|
|||||
Теоретик и Практик
|
пардон за расцветку, не знал ))
расцветку убрал, а вот глюки с обработкой ХТМЛ тегов присутствуют... пардон Последний раз редактировалось ihorko; 13.06.2002 в 04:08. |
|
|||||
"simple"
|
чё-т ты наворотил
мне кажется легче так: сделать три массива: один с символами, которые следует заменять (пользовательские, а не промежуточные (в скобках)) ($symbolsAr) второй с аналогичнами названиями в скобках($directivesAr) и третий с константами, содержащими код, на который нужно заменить названия в скобках ($codesAr) при передаче в бд: str_replace ( $symbolsAr, $directivesAr, $message ); при получении из бд: str_replace ( $directivesAr, $codesAr, $message ); ток в массивах элементы должны располагаться одинаково, т.е. если у тя в $symbolsAr первый элемент - "\n" то в $directivesAr должно быть первым , напр [BR] а в $codesAr - первый элемент - константа, содержащая <BR> у мя этот вариант работает на ура... |
|
|||||
Теоретик и Практик
|
это все хорошо. но я изменю подход только если мне приведут доказательство того, что мой код действительно НЕ ВИДИТ перенос строк, потому что проблема втом то и том то.... По сути нет разницы каким сопособом обрабатывать - мой со всем прекрасно справляется... кроме \n
кто-нибудь скажет, почему мой код не видит переносов строки??!! это уже скорее принципиальный интерес... |
Часовой пояс GMT +4, время: 22:18. |
|
« Предыдущая тема | Следующая тема » |
|
|