Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   парсер bb-code (https://javascript.ru/forum/misc/27329-parser-bb-code.html)

bpystep 09.04.2012 17:35

парсер 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 19:33

ребят, помогите, что не так сделано?

рони 09.04.2012 21:35

bpystep,
Возможно в str не только \n но и \r\n

bpystep 09.04.2012 22:23

Цитата:

Сообщение от рони (Сообщение 167986)
bpystep,
Возможно в str не только \n но и \r\n

идея помогла, теперь строки не добавляются, но когда строка проходит через парсер, 1 <br> заменяется на 2 \n по неизвестной причине...

рони 09.04.2012 22:58

bpystep,
Возможно так
\r*\n -> <br>
<br> -> \n

bpystep 09.04.2012 23:12

рони,
не катит((( уже пробовал такой вариант

п.с. а \r я так понял используется в Unix подобных системах? где можно про него почитать?

devote 10.04.2012 04:50

http://javascript.ru/forum/misc/2493...ng-bbcode.html

bpystep 10.04.2012 16:22

Цитата:

Сообщение от devote (Сообщение 168027)

к сожалению там ничего нет по поводу <br>

bpystep 11.04.2012 22:18

что, никто не сталкивался с подобным чтоли?

bpystep 13.04.2012 01:48

всего то нужно было добавить "\n" => "" в парсер.
сделал, тему можно закрывать.


Часовой пояс GMT +3, время: 15:43.