Показать сообщение отдельно
  #12 (permalink)  
Старый 19.01.2012, 20:29
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

Сообщение от Gozar
[color = red\]bububu[/color] не проблема, ведь мы получаем весь BBcode и можем потом с ним делать что хотим.
Ну уж не обязательно за пользователя делать все все все, не валидные BB я б не стал парсить, и обязательно искать теги по парам? Иначе можно без циклов и рекурсии, если, конечно не считать replace c global циклом

var BB = new function () {
			
	this.tags = {
		U: "ins",
		I: "em",
		B: "strong",
		S: "del"
	}
			
	function parseAttr(attr) {
		
		//	не реализовано
		return "ATTR";
	}
		
	var BB = /(?:\[(\/)?\s*(?:((?:\\[\s\S]|[^\[\]\s\=\/])+)(?:\s*=\s*((?:(?:(?:"[^"]*")|(?:'[^']*'))|(?:\\[\s\S]|[^\[\]\s\/]))+))?)\s*\])/g;
			
	this.toHtml = function (string) {
				
		var self = this;
				
		return string.replace(BB, function (m, closed, name, attr) {
			name = name.toUpperCase();
			
			return self.tags[name] ?
				"<" + (closed || "") + self.tags[name] +
					(attr ? " " + parseAttr(attr) : "") + ">" : m;
		});
	}
		
		
}();
		
var str = "[B]bold [B]bold [B = SOME]bold [I] ITALIC FONT[/I] foo[/B] bar [/B] zot [/B] zorg";
		
alert(BB.toHtml(str))


Извиняюсь если ерунду ляпнул, голова к вечеру квадратная
__________________
readOnly
Ответить с цитированием