Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена bb кодов, скрипт вешает брАузер 
:(
    Опции темы
Штык
Дата 7.4.2006, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 9.5.2005
Где: Москоу

Репутация: 1
Всего: 1



вопрос в следующем необходимо посредством Js заменить bb коды..

написал скрипт:
Код

function replace_string(txt,cut_str,paste_str){
                var position=0;
                var st='';
                 st = st + txt;
                 position=st.indexOf(cut_str);
                  while (position!=-1){
                      position=st.indexOf(cut_str);
                     if (position>0){
                        st = st.substr(0,position) + paste_str + st.substr(position+cut_str.length);
                     };
                      };
            return st
            };


проверил на замене пары символов все прекрасно работаеть..но как только начал заменять bb код браузер повис((

Код

replace_string('[img] bla bla bla','[img]','<img>');


вот эта строчка и ей подобные вешают все.. хотелось бы узнать как обойти это или как по другому заменить?
--------------------
Lachetes familieresQui nous rendent guerrieres
PM MAIL WWW ICQ   Вверх
2man
Дата 7.4.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



А если так:
Код

function tag_image()
{
    var FoundErrors = '';
    var enterURL   = prompt(text_enter_image, "http://");

    if (!enterURL) {
        FoundErrors += " " + error_no_url;
    }

    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }

        doInsert("[IMG]"+enterURL+"[/IMG]", "", false);
}

Добавлено @ 11:52
doInsert

Код

function doInsert(ibTag, ibClsTag, isSingle)
{
        var isClose = false;
        var obj_ta = document.REPLIER.Post;

        if ( (myVersion >= 4) && is_ie && is_win) // Ensure it works for IE4up / Win only
        {
                if(obj_ta.isTextEdit){ // this doesn't work for NS, but it works for IE 4+ and compatible browsers
                        obj_ta.focus();
                        var sel = document.selection;
                        var rng = sel.createRange();
                        rng.colapse;
                        if((sel.type == "Text" || sel.type == "None") && rng != null){
                                if(ibClsTag != "" && rng.text.length > 0)
                                        ibTag += rng.text + ibClsTag;
                                else if(isSingle)
                                        isClose = true;

                                rng.text = ibTag;
                        }
                }
                else{
                        if(isSingle)
                                isClose = true;

                        obj_ta.value += ibTag;
                }
        }
        else
        {
                if(isSingle)
                        isClose = true;

                obj_ta.value += ibTag;
        }

        obj_ta.focus();

        // clear multiple blanks
//        obj_ta.value = obj_ta.value.replace(/  /, " ");

        return isClose;
}



--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
2man
Дата 7.4.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



Зачем я отдельно выделил doInsert() ? Да потому, что тебе потом удобней будет обрабатывать другие теги smile\
Например URL:
Код

function tag_url()
{
    var FoundErrors = '';
    var enterURL   = prompt(text_enter_url, "http://");
    var enterTITLE = prompt(text_enter_url_name, "My Webpage");

    if (!enterURL) {
        FoundErrors += " " + error_no_url;
    }
    if (!enterTITLE) {
        FoundErrors += " " + error_no_title;
    }

    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }

        doInsert("[URL="+enterURL+"]"+enterTITLE+"[/URL]", "", false);
}

Таким же макаром и остальные теги smile


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Штык
Дата 7.4.2006, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 9.5.2005
Где: Москоу

Репутация: 1
Всего: 1



Код

var obj_ta = document.REPLIER.Post;


хммм..вот эта строчку ему не нравиться ругаеться( говорит что обьект есть null или не известен
--------------------
Lachetes familieresQui nous rendent guerrieres
PM MAIL WWW ICQ   Вверх
2man
Дата 7.4.2006, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



REPLIER - имя формы, Post - имя textarea


--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Штык
Дата 7.4.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 9.5.2005
Где: Москоу

Репутация: 1
Всего: 1



этот код для IE только вроде..и ты немного не понял мне не в textarea надо заменить а в строке..
то есть я получаю от скрипта XML данные и там в одном из блоков есть строчка с текстом след вида

Код

blablabla[img]smile.gif[/img]


так воть мну ее надо преобразовать в
Код

blablabla<img src='smile.gif'>

--------------------
Lachetes familieresQui nous rendent guerrieres
PM MAIL WWW ICQ   Вверх
2man
Дата 7.4.2006, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2007
Регистрация: 6.5.2005
Где: Нижние Чигири

Репутация: нет
Всего: 71



Код

$txt = preg_replace( "#\[img\](.+?)\[/img\]#ie"                             , "\$this->regex_check_image('\\1')"          , $txt );



--------------------
Быстро поднятое - упавшим не считаеся
PM MAIL ICQ MSN   Вверх
Штык
Дата 7.4.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 9.5.2005
Где: Москоу

Репутация: 1
Всего: 1



эммм это на пхп а надо на Js.. прочитал что это можно сделат методами обьекта String если кто нить знает как поделитесь плз..вроде там что то через RegEx
--------------------
Lachetes familieresQui nous rendent guerrieres
PM MAIL WWW ICQ   Вверх
12345c
Дата 7.4.2006, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Код

"blablabla[img]smile.gif[/img]".replace(/\[img\](.+)\[\/img\]/,"<img src='$1'>")

PM WWW   Вверх
szz
Дата 14.2.2007, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: нет
Всего: 33



12345c, я попробовал твое выражение, и оно заменяет только один раз, и причем самые дальние... 
Код
("blablabla[img]smile.gif[/img]bla[img]smile.gif[/img]bla[img]smile.gif[/img]bla")
                   .replace(/\[img\](.+)\[\/img\]/,"<img src='$1'>");

выдает
Код
blablabla<img src='smile.gif[/img]bla[img]smile.gif[/img]bla[img]smile.gif'>bla

Как это заставить менять все встеренные выражения во всем тексте корректно?


--------------------
PM   Вверх
12345c
Дата 14.2.2007, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Код
<script>alert(("blablabla[img]smile.gif[/img]bla[img]smile.gif[/img]bla[img]smile.gif[/img]bla")
                   .replace(/\[img\]([^\[]+)\[\/img\]/g,"<img src='$1'>"))</script>

PM WWW   Вверх
szz
Дата 14.2.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: нет
Всего: 33



А, это в жаваскрипте глобал smile такое же как и у нас smile пасибо ))))


--------------------
PM   Вверх
12345c
Дата 14.2.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



Насколько помнится из Перла, это "greedy". smile
Всё про РВ/JS можно узнать здесь:
http://js2.ru/files/js/regularexpressionJS.html
http://js2.ru/files/js/RegExpJS.html

Это сообщение отредактировал(а) 12345c - 3.3.2008, 12:37


--------------------
Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0885 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.