написал парсер bb-code и обратный парсер bb-code:
function bbcode_parser(str) {
search = new Array("<br>","<b>?(.*?)</b>","<i>?(.*?)</i>","<u>?(.*?)</u>","<del>?(.*?)</del>","<a href\=\"?(.*?)\"?\>(.*?)\<\/a\>","<img src\=\"?(.*?)\"?\ border\=\"?(.*?)\"?\ align\=\"?(.*?)\"?\>");
replace = new Array("\n","[b]$1[/b]","[i]$1[/i]","[u]$1[/u]","[s]$1[/s]","[a url=\'$1\']$2[/a]","[img url=\'$1\' pos=\'$3\'\]");
for (i = 0; i < search.length; i++) {
str = str.replace(new RegExp(search[i],'g'),replace[i]);
}
return str;
}
function bbcode_unparser(str) {
search = new Array("\n","\\[b\\]?(.*?)\\[/b\\]","\\[i\\]?(.*?)\\[/i\\]","\\[u\\]?(.*?)\\[/u\\]","\\[s\\]?(.*?)\\[/s\\]","\\[a url=\'?(.*?)\'\\]?(.*?)\\[/a\\]","\\[img url=\'?(.*?)\' pos=\'?(.*?)\'\\]");
replace = new Array("<br>","<b>$1</b>","<i>$1</i>","<u>$1</u>","<del>$1</del>","<a href\=\"$1\"\>$2\<\/a\>","<img src\=\"$1\" border=\"0\" align\=\"$2\"\>");
for (i = 0; i < search.length; i++) {
str = str.replace(new RegExp(search[i],'g'),replace[i]);
}
return str;
}
все работает, вот только когда происходит обратный парсер, он добавляет новые пустые строчки, какая то беда с "<br>" и "\n".
с чего бы это он так себя ведет?
п.с. экранирую символы "[" и "]" этим "\\" так как, браузеру не нравится просто "\"