| 
	| 
	
	| 
		
	| 
			
			 
			
				26.01.2010, 11:47
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 12.05.2009 
						Сообщений: 317
					 
		
 |  |  
	| 
				конвертировать html-коды
			 Здраствуйте, не смог придумать строчку для поискового запроса. поэтому просто задав жутко тривиальный вопрос, есть у кого готовая функция для коевертирования html-кодов в их собственно нормальное представление? |  |  
	| 
		
	| 
			
			 
			
				26.01.2010, 12:12
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 20.03.2008 
						Сообщений: 1,183
					 
		
 |  |  
	| var t= document.createElement('textarea')t.innerHTML= '<'
 alert( t.value )
 
				__________________.ня
 |  |  
	| 
		
	| 
			
			 
			
				26.01.2010, 13:25
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 12.05.2009 
						Сообщений: 317
					 
		
 |  |  
	| 
	
 
	| Сообщение от tenshi   |  
	| var t= document.createElement('textarea') t.innerHTML= '<'
 alert( t.value )
 |  
	
 вы действительно так делаете?!			 Последний раз редактировалось da_ff, 26.01.2010 в 13:31.
 |  |  
	| 
		
	| 
			
			 
			
				26.01.2010, 13:28
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 12.05.2009 
						Сообщений: 317
					 
		
 |  |  
	| пришлось писать свое 
function convertSpecSymbols (str, toText) {
  var
    symbols = [
      ['&',     '&'],
      ['<',      '<'],
      ['>',      '>'],
      ['∧',     '^'],
      ['∼',     '~']
    ],
    pos = -1;
  if (typeof toText == 'undefined' || toText) {
    for (var i = 0, n = symbols.length; i < n; i++) {
      while ((pos = str.indexOf(symbols[i][0], pos + 1)) != -1) {
        str = str.substring(0, pos) + symbols[i][1] + str.substring(pos + symbols[i][0].length);
      }
    }
  } else {
    for (var i = 0, n = symbols.length; i < n; i++) {
      while ((pos = str.indexOf(symbols[i][1], pos + 1)) != -1) {
        str = str.substring(0, pos) + symbols[i][0] + str.substring(pos + symbols[i][1].length);
      }
    }
  }
  return str;
}
			 Последний раз редактировалось da_ff, 26.01.2010 в 13:30.
 |  |  
	| 
		
	| 
			
			 
			
				26.01.2010, 15:20
			
			
			
		 |  
	| 
		
			|  | Матрос       |  | 
					Регистрация: 04.04.2008 
						Сообщений: 6,246
					 
		
 |  |  
	| 
	
 
	| Сообщение от da_ff |  
	| symbols = [       ['&',     '&'],       ['<',      '<'],       ['>',      '>'],       ['∧',     '^'],       ['∼',     '~']     ], |  
	
 аха 
а теперь возьмите, и создайте нормальный массив хотя бы для этих именованных символов 
	
 
	| Сообщение от da_ff |  
	| вы действительно так делаете?! |  
	
 вы не поверите, но это будет быстрее и полнее чем ваша ф-ция |  |  
	| 
		
	| 
			
			 
			
				26.01.2010, 15:29
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 12.05.2009 
						Сообщений: 317
					 
		
 |  |  
	| действительно полагаете что так будет быстрее? если вы проверяли то скажите сразу, чтобы не мучиться. 			 Последний раз редактировалось da_ff, 26.01.2010 в 15:35.
 |  |  
	| 
		
	| 
			
			 
			
				26.01.2010, 15:35
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| Насчёт скорости не знаю, но тащить огромную таблицу символов ради сомнительной функции точно не стоит. |  |  
	| 
		
	| 
			
			 
			
				26.01.2010, 15:49
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 12.05.2009 
						Сообщений: 317
					 
		
 |  |  
	| во-первых, таблица конечнаяво-вторых, скорость в плане приоритета куда выше объема написанного кода.
 в-третьих, почему функция сомнительна?! сомнительна  реализация функции, сама функция мне нужна и сомнительного в ней ничего нет.
 |  |  
	| 
		
	| 
			
			 
			
				26.01.2010, 16:03
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| 
	
 
	| Сообщение от da_ff |  
	| во-первых, таблица конечная |  
	
 Разумеется конечная, хотя бы потому, что множество символов конечно. Но немаленькая.
 
	
 
	| Сообщение от da_ff |  
	| во-вторых, скорость в плане приоритета куда выше объема написанного кода. |  
	
 Различие в скорости будет много меньше различия в размерах. Более того -- различие в скорости будет мизерным.
 
	
 
	| Сообщение от da_ff |  
	| в-третьих, почему функция сомнительна? |  
	
 Ну вот мне, например, никогда такая функция ещё не нужна была. Только теги заэскейпить -- да, а вот туеву хучу остальных символов -- нет. Я не исключаю, что вам это понадобилось, но это действительно очень редкий случай. |  |  
	| 
		
	| 
			
			 
			
				26.01.2010, 16:41
			
			
			
		 |  
	| 
		
			|  | Матрос       |  | 
					Регистрация: 04.04.2008 
						Сообщений: 6,246
					 
		
 |  |  
	| 
	
 
	| Сообщение от da_ff |  
	| действительно полагаете что так будет быстрее? если вы проверяли то скажите сразу, чтобы не мучиться. |  
	
 оптимизированный для многократного применения вариант tenshi , быстрее вашей ф-ции уже после 50-и < 
Если же вашу ф-цию переписать нормально, то она становится быстрее на любых тестах(по-крайней мере до 1000-и <  
НО! если добавить в массив symbols еще сотню пар хотя бы, то на тысяче < ваша ф-ция даже оптимизированная сдает позиции 
как итог, ваша ф-ция более быстрая при меньшей универсальности 
НО! 
включение посторонних(не &xxx; ) символов сильно тормозит вашу ф-цию, а tenshi-вариант абсолюбтно не замедляется
 
(function(){
var t= document.createElement('textarea');
func1=function(text){
t.innerHTML=text;
return t.value
}
})();
function func2 (str, toText) {
  var
    symbols = [
      ['&',     '&'],
      ['<',      '<'],
      ['>',      '>'],
      ['∧',     '^'],
      ['∼',     '~'],
	  [' ',' '],
['¡','¡'],
['¢','¢'],
['£','£'],
['¤','¤'],
['¥','¥'],
['¦','¦'],
['§','§'],
['¨','¨'],
['©','©'],
['ª','ª'],
['«','«'],
['¬','¬'],
['­',''],
['®','®'],
['¯','¯'],
['°','°'],
['±','±'],
['²','²'],
['³','³'],
['´','´'],
['µ','µ'],
['¶','¶'],
['·','·'],
['¸','¸'],
['¹','¹'],
['º','º'],
['»','»'],
['¼','¼'],
['½','½'],
['¾','¾'],
['¿','¿'],
['À','À'],
['Á','Á'],
['Â','Â'],
['Ã','Ã'],
['Ä','Ä'],
['Å','Å'],
['Æ','Æ'],
['Ç','Ç'],
['È','È'],
['É','É'],
['Ê','Ê'],
['Ë','Ë'],
['Ì','Ì'],
['Í','Í'],
['Î','Î'],
['Ï','Ï'],
['Ð','Ð'],
['Ñ','Ñ'],
['Ò','Ò'],
['Ó','Ó'],
['Ô','Ô'],
['Õ','Õ'],
['Ö','Ö'],
['×','×'],
['Ø','Ø'],
['Ù','Ù'],
['Ú','Ú'],
['Û','Û'],
['Ü','Ü'],
['Ý','Ý'],
['Þ','Þ'],
['ß','ß'],
['à','à'],
['á','á'],
['â','â'],
['ã','ã'],
['ä','ä'],
['å','å'],
['æ','æ'],
['ç','ç'],
['è','è'],
['é','é'],
['ê','ê'],
['ë','ë'],
['ì','ì'],
['í','í'],
['î','î'],
['ï','ï'],
['ð','ð'],
['ñ','ñ'],
['ò','ò'],
['ó','ó'],
['ô','ô'],
['õ','õ'],
['ö','ö'],
['÷','÷'],
['ø','ø'],
['ù','ù'],
['ú','ú'],
['û','û'],
['ü','ü'],
['ý','ý'],
['þ','þ'],
['ÿ','ÿ']
    ],
    pos = -1;
  if (typeof toText == 'undefined' || toText) {
    for (var i = 0, n = symbols.length; i < n; i++) {
		str=str.replace(new RegExp(symbols[i][0],'g'),symbols[i][1]);
    }
  } else {
    for (var i = 0, n = symbols.length; i < n; i++) {
	str=str.replace(new RegExp(symbols[i][1],'g'),symbols[i][0]);
    }
  }
  return str;
}
</script>
<script type="text/javascript">
var text='<'
var start = new Date();
for (var i = 0; i < 10000; i++)
	{
	func1(text);
	}
var end = new Date();
var result = end.getTime() - start.getTime();
console.log(result + 'ms');
var start = new Date();
for (var i = 0; i < 10000; i++)
	{
	func2(text);
	}
var end = new Date();
var result = end.getTime() - start.getTime();
console.log(result + 'ms');
var text='<||<|<|<|<|'+'<|<|<|<|<|'+
'<|<|<|<|<|'+'<|<|<|<|<|'+
'<|<|<|<|<|'+'<|<|<|<|<|'+
'<|<|<|<|<|'+'<|<|<|<|<|'+
'<|<|<|<|<|'+'<|<|<|<|<|'
;
text+=text;
text=(text+text+text+text+text);
text+=text;
var start = new Date();
for (var i = 0; i < 100; i++)
	{
	func1(text);
	}
var end = new Date();
var result = end.getTime() - start.getTime();
console.log(result + 'ms');
var start = new Date();
for (var i = 0; i < 100; i++)
	{
	func2(text);
	}
var end = new Date();
var result = end.getTime() - start.getTime();
console.log(result + 'ms');
var text='<||<||<||<||<||'+'<||<||<||<||<||'+
'<||<||<||<||<||'+'<||<||<||<||<||'+
'<||<||<||<||<||'+'<||<||<||<||<||'+
'<||<||<||<||<||'+'<||<||<||<||<||'+
'<||<||<||<||<||'+'<||<||<||<||<||'
;
text+=text;
text=(text+text+text+text+text);
text+=text;
var start = new Date();
for (var i = 0; i < 100; i++)
	{
	func1(text);
	}
var end = new Date();
var result = end.getTime() - start.getTime();
console.log(result + 'ms');
var start = new Date();
for (var i = 0; i < 100; i++)
	{
	func2(text);
	}
var end = new Date();
var result = end.getTime() - start.getTime();
console.log(result + 'ms');
потестируйте сами
			
			
	
			
			
			
			
			
				  |  |  |  |