Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2012, 19:33
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

ребят, помогите, что не так сделано?
Ответить с цитированием
  #3 (permalink)  
Старый 09.04.2012, 21:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

bpystep,
Возможно в str не только \n но и \r\n
Ответить с цитированием
  #4 (permalink)  
Старый 09.04.2012, 22:23
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

Сообщение от рони Посмотреть сообщение
bpystep,
Возможно в str не только \n но и \r\n
идея помогла, теперь строки не добавляются, но когда строка проходит через парсер, 1 <br> заменяется на 2 \n по неизвестной причине...
Ответить с цитированием
  #5 (permalink)  
Старый 09.04.2012, 22:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

bpystep,
Возможно так
\r*\n -> <br>
<br> -> \n
Ответить с цитированием
  #6 (permalink)  
Старый 09.04.2012, 23:12
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

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

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

Последний раз редактировалось bpystep, 09.04.2012 в 23:15.
Ответить с цитированием
  #7 (permalink)  
Старый 10.04.2012, 04:50
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Парсинг BBcode
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 10.04.2012, 16:22
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

Сообщение от devote Посмотреть сообщение
Парсинг BBcode
к сожалению там ничего нет по поводу <br>
Ответить с цитированием
  #9 (permalink)  
Старый 11.04.2012, 22:18
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

что, никто не сталкивался с подобным чтоли?
Ответить с цитированием
  #10 (permalink)  
Старый 13.04.2012, 01:48
Профессор
Отправить личное сообщение для bpystep Посмотреть профиль Найти все сообщения от bpystep
 
Регистрация: 06.08.2010
Сообщений: 161

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция парсинга строки в массив байт. B~Vladi Ваши сайты и скрипты 50 28.12.2011 16:16
Node cannot be inserted at the specified point in the hierarchy" code: "3 [MI_nor] Events/DOM/Window 14 20.04.2011 18:21
The only valid measurement of code quality: WTFs/m x-yuri Оффтопик 0 30.01.2011 13:26
BBCodes парсер на JavaScript Бабу Элементы интерфейса 1 24.12.2009 20:19
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37