 
			
				02.11.2011, 23:44
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.10.2010 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Игнорировать BB-коды
			 
			
		
		
		
		Имеется скрипт JS-типографа. Работает хорошо (ох уж я с ним повозился), основан на регулярных выражениях. Рассчитан на работу с сообщениями на форумах. Но - он постоянно сбивается из-за ББ-кодов. Конечно, пользователи уже привыкли, что надо сначала типографить, а зачем надевать коды, но всё равно - некрасиво это. 
Как решить эту проблему? Переделывать каждое регулярное выражение для игнорирования ББ-кодов нецелесообразно, а как удалять ББ-коды, а затем их расставлять обратно, я не представляю - длина сообщения меняется после обработки. Есть какой-то способ заставить его игнорировать бб-коды?
 Код 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				03.11.2011, 02:01
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Модератор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.04.2010 
					
					
					
						Сообщений: 3,417
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Можно попробовать заменять скобки bb-кодов на что-то ещё (набор букв, символов и т.д.) Только надо подобрать уникальный набор (который вряд ли напечатает пользователь). А после обработки сообщения менять всё обратно. 
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				03.11.2011, 17:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.10.2010 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 trikadin, 
Была такая идея. Вот только сути проблемы это не меняет - теперь типограф будет запинаться об этот уникальный набор символов. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				03.11.2011, 19:48
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Модератор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.04.2010 
					
					
					
						Сообщений: 3,417
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 А опишите, пожалуйста, принцип работы своего "типографа". Я думал, проблема в том, что квадратные скобки мешают нормальной работе его регэкспов. 
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				03.11.2011, 23:45
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.10.2010 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 trikadin, 
 Не мешают. Дело в том, что скрипт подменяет некоторые символы в зависимости от их положения, и в основном это зависит от пробелов. К примеру, "тест" будет заменено на «тест», а ориентируется скрипт по пробелам. Но, если выделить это слово в коды, к примеру, [B]"тест"[/B], то скрипт не увидит пробелов, и соответственно, ничего не заменит. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.11.2011, 01:08
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Модератор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.04.2010 
					
					
					
						Сообщений: 3,417
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		А что мешает отбить bb-коды пробелами от слов? А потом убрать лишние пробелы. Как-то так: 
str= "bla-bla, [B]bla-bla-bla[/B], mr. Freeman";
str= str.replace(/\[[\S\s]*?\]/g, " $& ");
alert(str);
// здесь вы делаем со строкой всё, что нужно, а потом убираем лишние пробелы.
str= str.replace(/\s(\[[\S\s]*?\])\s/g, "$1");
alert(str);
  
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.11.2011, 10:42
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.10.2010 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 trikadin, 
 Тут возникает другая проблема - теперь будут ложные срабатывания из-за наличия пробелов. К примеру, "тест" должен замениться на «тест», но если его внутренность выделить в ББ-код "[B]тест[/B]", то при типографии будет ситуация " [B] тест [/B] ". Справа и слева от кавычек будут пробелы, и в итоге скрипт опять-таки будет в непонятках - куда кавычки разворачивать? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.11.2011, 12:39
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Модератор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.04.2010 
					
					
					
						Сообщений: 3,417
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Zlyden
			
		
	 | 
 
	| 
		куда кавычки разворачивать?
	 | 
 
	
 
 Странно у вас скрипт работает. Всегда казалось, что такие типографы должны последовательно находить свободные пары и просто первую из пары делать левосторонней кавычкой, а вторую, соответственно - правосторонней. И не от каких пробелов не зависит. Как-то так:
 
str= 'bla-bla, "[B]bla-bla[/B]", [B]"bla-bla-bla"[/B], mr. Freeman'
str= str.replace(/"([\S\s]*?)"/g, "«$1»");
alert(str);
 
И всё ок))  
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.11.2011, 12:40
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Модератор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.04.2010 
					
					
					
						Сообщений: 3,417
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Это я к чему, в общем. Я не вижу других вариантов, кроме как доработать код самого типографа. 
		
	
		
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.11.2011, 14:23
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.10.2010 
					
					
					
						Сообщений: 19
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 trikadin, 
 Проблема с кавычками в том, что есть такая вещь как вложенные кавычки и они могут быть не одни. 
Были надежды, но не сбылись... 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |