Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как конвертировать HTML-сущности в строке в соответствующие символы (https://javascript.ru/forum/misc/79984-kak-konvertirovat-html-sushhnosti-v-stroke-v-sootvetstvuyushhie-simvoly.html)

ozoro 13.04.2020 19:44

Как конвертировать HTML-сущности в строке в соответствующие символы
 
Пробовал так

var str = 'Только буквы, цифры и символы  <b>. – _</b>';

function convert(str){
	str = str.replace('&','&');
	str = str.replace('>','>');
	str = str.replace('&lt;','<');
	str = str.replace('&quot;','"');
	str = str.replace("'","'");
	return str;
}
//выводит
console.log(convert(str)); //Только буквы, цифры и символы  <b>. – _&lt;/b&gt;

//нужно чтобы выводило следующее:
//Только буквы, цифры и символы  <b>. – _</b>



Пробовал также:
var str = 'Только буквы, цифры и символы  &lt;b&gt;. – _&lt;/b&gt;';

function convert(str){
	str = str.replace('&amp;','&');
	str = str.replace('&gt;','>');
	str = str.replace('&lt;','<');
	str = str.replace('&quot;','"');
	str = str.replace("'","'");
	return str;
}

var ptrn = new RegExp("\\b(&amp;|&gt;|&lt;|&quot;|')\\b", "gi");
						
function escapeHtml(str) {
	return String(str).replace(ptrn, function (s) {
	return convert[s];
	});
}

console.log(escapeHtml(str)); //ничего не выводит


Можно также на jquery ответить...

Заранее, благодарю!

voraa 13.04.2020 20:03

var str = 'Только буквы, цифры и символы  &lt;b&gt;. – _&lt;/b&gt;';
 
function convert(str){
    return str.replace(/&quot;/g,'"')
    .replace(/&gt;/g,'>')
    .replace(/&lt;/g,'<')
    .replace(/&amp;/g,'&')
}

console.log(convert(str));

ozoro 13.04.2020 20:14

voraa,
Благодарю, помог! Все работает. + в карму...

рони 13.04.2020 20:20

ozoro,
var str = 'Только буквы, цифры и символы  &lt;b&gt;. – _&lt;/b&gt;';
function convert(str){
    var div = document.createElement('div');
    div.innerHTML = str;
    return div.textContent;
}

console.log(convert(str));

voraa 13.04.2020 20:47

рони
Не достаточно универсально.
В Worker нельзя использовать.

рони 13.04.2020 20:55

Цитата:

Сообщение от voraa
В Worker нельзя использовать.

почему?

рони 13.04.2020 20:58

voraa,
а так будет работать в Worker?
var str = 'Только буквы, цифры и символы  &lt;b&gt;. 11– _&lt;/b&gt;';
function convert(str){
  return new DOMParser().parseFromString(str, "text/html").body.textContent;
}

console.log(convert(str));

voraa 13.04.2020 21:00

Worker-ам недоступен глобальный объект windows.
Поэтому там нет document и всего, что с ним связано.
Там свой глобальный объект self.
https://developer.mozilla.org/en-US/...obalScope/self

рони 13.04.2020 21:01

voraa,
спасибо.


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