Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 13.06.2002, 03:02
ihorko вне форума Посмотреть профиль Отправить личное сообщение для ihorko Посетить домашнюю страницу ihorko Найти все сообщения от ihorko
  № 1  
ihorko
Теоретик и Практик
 
Аватар для ihorko

Регистрация: Mar 2001
Адрес: Київ, .NET.UA
Сообщений: 1,173
Отправить сообщение для ihorko с помощью ICQ Отправить сообщение для ihorko с помощью AIM Отправить сообщение для ihorko с помощью Yahoo
По умолчанию проблема с nl2br() и <textarea>

помогите, появилась проблема с использованием функции nl2br().
есть форма (с текстареа), в которой набирается текст с использованием синтаксиса для форматирования (например [Ж]жирний текст[/Ж]). Есть анализатор, который перед вставкой в базу заменяет теги этого форматирования на обычные ХТМЛ-теги (теги из примера меняются на <b>жирный текст</b> ). Все работает нормально. Дополнительно очень нужны и теги переноса строки, тоесть <br>. Строка перед анализом на синтаксис пропускается через эту функцию, но теги <br> почему-то не добавляются...
Может проблема в том, что нажатие "Enter" в текстовом поле не вставляет символ переноса строки \n?
Как вообще можно это реализовать (добавление тега <br> )?
Есть конечно идея яваскриптом при нажатии "Enter" вставлять что-то типа [BR], который анализатором менять на <br>, но по моему это уже извращение, да и текст в поле засоряет...
Кто-то что-то посоветует? Плиииииииииииииз!!!

заранее благодарен
__________________
nothing | жежо

Старый 13.06.2002, 03:31
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 2  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
я делал так:
при вставке в базу данных заменял все нужные мне символы их комбинации на определённоё мною название в скобках...
т.е. в дан случае:
запись в БД:
DEFINE ("NEWLINE","<BR>");
str_replace ( "\n", "[NL]", $message );

а при получении из БД
echo ( str_replace ( "[NL]", NEWLINE, $message ) );
всё пашет

Старый 13.06.2002, 03:44
ihorko вне форума Посмотреть профиль Отправить личное сообщение для ihorko Посетить домашнюю страницу ihorko Найти все сообщения от ihorko
  № 3  
ihorko
Теоретик и Практик
 
Аватар для ihorko

Регистрация: Mar 2001
Адрес: Київ, .NET.UA
Сообщений: 1,173
Отправить сообщение для ihorko с помощью ICQ Отправить сообщение для ihorko с помощью AIM Отправить сообщение для ihorko с помощью Yahoo
да как вставить я то знаю... у меня проблема в том, что анализатор не находит в полученой строке ни одного \n!!!
в чем может быть прикол?
__________________
nothing | жежо

Старый 13.06.2002, 03:50
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 4  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
ну не знаю..
если тока ЕНТЕР не нажимаешь...
а так давай кусок кода, отвечающий за это дело... мож там ошибка..
или сам поищи...
у мя нормано находит...

Старый 13.06.2002, 03:50
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 5  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Код:
<form method="post" action="text.php">
  <textarea name="text">
  </textarea>
  <input type="submit">
</form>
<?php

$text = $HTTP_POST_VARS["text"];
$text = ereg_replace("\r\n|\r|\n","<br>",$text);

echo $text;

?>
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 13.06.2002, 04:03
ihorko вне форума Посмотреть профиль Отправить личное сообщение для ihorko Посетить домашнюю страницу ihorko Найти все сообщения от ihorko
  № 6  
ihorko
Теоретик и Практик
 
Аватар для ihorko

Регистрация: Mar 2001
Адрес: Київ, .NET.UA
Сообщений: 1,173
Отправить сообщение для ihorko с помощью ICQ Отправить сообщение для ihorko с помощью AIM Отправить сообщение для ihorko с помощью Yahoo
вот функция - анализатор синтаксиса:
Код:
 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;
2. вариант номер два:
Код:
 
$input_str = 'test bold text\ntest italic text';
 str2htm ($input_str, &$return_str);
 echo $return_str;
Ни так ни сяк не работает... Получая данные из текствого поля тоже не работает....
__________________
nothing | жежо


Последний раз редактировалось ihorko; 13.06.2002 в 04:07.
Старый 13.06.2002, 04:05
ihorko вне форума Посмотреть профиль Отправить личное сообщение для ihorko Посетить домашнюю страницу ihorko Найти все сообщения от ihorko
  № 7  
ihorko
Теоретик и Практик
 
Аватар для ihorko

Регистрация: Mar 2001
Адрес: Київ, .NET.UA
Сообщений: 1,173
Отправить сообщение для ihorko с помощью ICQ Отправить сообщение для ihorko с помощью AIM Отправить сообщение для ihorko с помощью Yahoo
пардон за расцветку, не знал ))
расцветку убрал, а вот глюки с обработкой ХТМЛ тегов присутствуют... пардон
__________________
nothing | жежо


Последний раз редактировалось ihorko; 13.06.2002 в 04:08.
Старый 13.06.2002, 04:12
ihorko вне форума Посмотреть профиль Отправить личное сообщение для ihorko Посетить домашнюю страницу ihorko Найти все сообщения от ihorko
  № 8  
ihorko
Теоретик и Практик
 
Аватар для ihorko

Регистрация: Mar 2001
Адрес: Київ, .NET.UA
Сообщений: 1,173
Отправить сообщение для ihorko с помощью ICQ Отправить сообщение для ihorko с помощью AIM Отправить сообщение для ihorko с помощью Yahoo
короче, с отображением кода тута проблемы... вот файл со всеми ужасами...
Вложения
Тип файла: txt tagreader.php.txt (1.2 Кб, 101 просмотров)
__________________
nothing | жежо

Старый 13.06.2002, 04:22
metton вне форума Посмотреть профиль Отправить личное сообщение для metton Посетить домашнюю страницу metton Найти все сообщения от metton
  № 9  
metton
"simple"
 
Аватар для metton

Регистрация: Feb 2002
Адрес: Россия, Москва
Сообщений: 1,155
Отправить сообщение для metton с помощью ICQ
чё-т ты наворотил
мне кажется легче так:
сделать три массива:

один с символами, которые следует заменять (пользовательские, а не промежуточные (в скобках)) ($symbolsAr)

второй с аналогичнами названиями в скобках($directivesAr)

и третий с константами, содержащими код, на который нужно заменить названия в скобках ($codesAr)

при передаче в бд:
str_replace ( $symbolsAr, $directivesAr, $message );

при получении из бд:
str_replace ( $directivesAr, $codesAr, $message );

ток в массивах элементы должны располагаться одинаково, т.е.
если у тя в $symbolsAr первый элемент - "\n"
то в $directivesAr должно быть первым , напр [BR]
а в $codesAr - первый элемент - константа, содержащая <BR>

у мя этот вариант работает на ура...

Старый 13.06.2002, 04:30
ihorko вне форума Посмотреть профиль Отправить личное сообщение для ihorko Посетить домашнюю страницу ihorko Найти все сообщения от ihorko
  № 10  
ihorko
Теоретик и Практик
 
Аватар для ihorko

Регистрация: Mar 2001
Адрес: Київ, .NET.UA
Сообщений: 1,173
Отправить сообщение для ihorko с помощью ICQ Отправить сообщение для ihorko с помощью AIM Отправить сообщение для ihorko с помощью Yahoo
это все хорошо. но я изменю подход только если мне приведут доказательство того, что мой код действительно НЕ ВИДИТ перенос строк, потому что проблема втом то и том то.... По сути нет разницы каким сопособом обрабатывать - мой со всем прекрасно справляется... кроме \n

кто-нибудь скажет, почему мой код не видит переносов строки??!! это уже скорее принципиальный интерес...
__________________
nothing | жежо

Создать новую тему   Часовой пояс GMT +4, время: 22:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:18.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.