Конвертировать теги в HTML-объекты - PullRequest
11 голосов
/ 10 апреля 2010

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

Пример:

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

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

Ответы [ 7 ]

28 голосов
/ 10 апреля 2010

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

function htmlencode(str) {
    return str.replace(/[&<>"']/g, function($0) {
        return "&" + {"&":"amp", "<":"lt", ">":"gt", '"':"quot", "'":"#39"}[$0] + ";";
    });
}
8 голосов
/ 10 апреля 2010

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

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

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

2 голосов
/ 26 июля 2015

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

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

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

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

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>
1 голос
/ 10 апреля 2010

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

var myVar = "<span><strong>Some vars</strong> Some var extra</span>";
$("div").text(myVar);
1 голос
/ 10 апреля 2010

В JQuery:

$('<div/>').text('This is fun & stuff').html(); // evaluates to "This is fun &amp; stuff"

http://debuggable.com/posts/encode-html-entities-with-jquery:480f4dd6-13cc-4ce9-8071-4710cbdd56cb

0 голосов
/ 01 апреля 2016

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

var tag = "<h1>This should </h1>be bold<h2> and big</h2>";
var escapedTag = tag.replace(/</g, "&lt;").replace(/>/g, "&gt;");
0 голосов
/ 10 апреля 2010
var d = "<div>"
d = d.replace(/<|>/g, function(chr){
    return chr == "<" ? "&lt;" : "&gt;"
})
console.log(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...