Преобразование тегов в html-объекты

Можно ли конвертировать html-теги в html-объекты с помощью javascript/jquery любым возможным способом, например регулярным выражением или каким-либо другим способом. Если да, то как?

Пример:

<div> следует преобразовать в &lt;div&gt;

Примечание: Я не говорю о серверных языках.

Ответ 1

Попробуйте эту функцию для специальных символов HTML:

function htmlencode(str) {
    return str.replace(/[&<>"']/g, function($0) {
        return "&" + {"&":"amp", "<":"lt", ">":"gt", '"':"quot", "'":"#39"}[$0] + ";";
    });
}

Ответ 2

Как вы отметили jquery, для вас должно работать решение с поддержкой jQuery:

$("<div>").text("<div>bleh</div>whatever").html()

Замените аргумент текстовым методом любой разметкой, которую вы хотите удалить.

Ответ 4

Если у вас есть переменная, и вы хотите вставить ее в div, вы можете вызвать текст().

var myVar = "<span><strong>Some vars</strong> Some var extra</span>";
$("div").text(myVar);

Ответ 5

У меня есть 2 быстрая и малая реализация для безопасного кодирования HTML.

Вы можете кодировать все символы в строке:

function encode(e){return e.replace(/[^]/g,function(e){return"&#"+e.charCodeAt(0)+";"})}

Или просто нацелитесь на главных героев, чтобы беспокоиться (&, inebreaks, <, > , "and '), например:

function encode(r){
return r.replace(/[\x26\x0A\<>'"]/g,function(r){return"&#"+r.charCodeAt(0)+";"})
}

var myString='Encode HTML entities!\n"Safe" escape <script></'+'script> & other tags!';

test.value=encode(myString);

testing.innerHTML=encode(myString);

/*************
* \x26 is &ampersand (it has to be first),
* \x0A is newline,
*************/
<p><b>What JavaScript Generated:</b></p>

<textarea id=test rows="3" cols="55"></textarea>

<p><b>What It Renders Too In HTML:</b></p>

<div id="testing">www.WHAK.com</div>

Ответ 6

var d = "<div>"
d = d.replace(/<|>/g, function(chr){
    return chr == "<" ? "&lt;" : "&gt;"
})
console.log(d)

Ответ 7

Ниже приведен краткий способ использования String.prototype.replace() и регулярных выражений следующим образом:

var tag = "<h1>This should </h1>be bold<h2> and big</h2>";
var escapedTag = tag.replace(/</g, "&lt;").replace(/>/g, "&gt;");