Показать сообщение отдельно
  #1 (permalink)  
Старый 09.04.2012, 17:35
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

парсер bb-code
написал парсер 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".
с чего бы это он так себя ведет?

п.с. экранирую символы "[" и "]" этим "\\" так как, браузеру не нравится просто "\"

Последний раз редактировалось bpystep, 09.04.2012 в 17:44.
Ответить с цитированием