Показать сообщение отдельно
  #10 (permalink)  
Старый 18.02.2016, 21:51
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

ureech,
Ну просто входную строку перед парсером
var str ="asdasdasdasd\nasdasdasd";
str = str.replace(/\n/g,'<br>');
alert(str)

Блоки BB-код [code=...]что-то[/code] нун вытаскивать из строки до парсера
ну короче:

var str = "asdas&da<sda>sd\nas[code=XXX]dasdasd[/code]asdasdasdasd\nas[code=YYY]dasdasd[/code]вавапвапвапва";
//Тут парсим & и угловые скобки
str = str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
alert(str);
//Вынимаем теги [code] из строки
var stack = [], j=-1, bound = '==bound==';
str = str.replace(/(\[code(:?=[^\]]+)?\])(.*?)(\[\/code\])/gi, function (s,p1,p2,p3){
    stack[++j]=[p1,p2,p3]; return bound+j+bound;
});
//Заменяем \n на <br>
str = str.replace(/\n/g,'<br>');
alert(str); /*Эту строку можно запихивать в парсер*/

Теги [code] парсим в стеке, вставляем их обратно в стек же, вместо [p1,p2,p3] и значение стека(распарсенный тег [code]) вставляем после распарса всей строки в парсере, заменяя ==bound==NUMstack==bound== на значение стека.

Типично boundary(разделитель или селектор) более длинный, типо bound = '====12358====';

Последний раз редактировалось Deff, 19.02.2016 в 22:25.
Ответить с цитированием