如何逃避HTML

时间:2010-06-15 08:53:00

标签: javascript html dom

我有一个包含HTML文本的字符串。我需要逃避字符串而不是标签。 例如,我有包含

的字符串
<ul class="main_nav">
<li>
<a class="className1" id="idValue1" tabindex="2">Test & Sample</a>
</li>
<li>
<a class="className2" id="idValue2" tabindex="2">Test & Sample2</a>
</li>
</ul>

如何将文本转义为,

<ul class="main_nav">
<li>
<a class="className1" id="idValue1" tabindex="2">Test &amp; Sample</a>
</li>
<li>
<a class="className2" id="idValue2" tabindex="2">Test &amp; Sample2</a>
</li>
</ul>

不修改标签。

可以使用HTML DOM和javascript处理吗?

由于

5 个答案:

答案 0 :(得分:14)

我很惊讶没有人回答这个问题。您可以自己使用浏览器为您进行转义。没有正则表达式比让浏览器做最好的事情更好或更安全,处理HTML。

function escapeHTML(str){
    var p = document.createElement("p");
    p.appendChild(document.createTextNode(str));
    return p.innerHTML;
}

或使用Option()构造函数的简短替代

function escapeHTML(str){
    return new Option(str).innerHTML;
}

答案 1 :(得分:9)

答案 2 :(得分:0)

您可以对字符串中的所有字符进行编码:

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

或者只是针对主角担心(&amp;,inebreaks,&lt;,&gt;,“和'),如:

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 Sees:</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>

答案 3 :(得分:-1)

您使用的是哪种服务器端语言?

如果您使用PHP,则可以使用htmlentities

示例:

<?php

$myHTML = "<h1>Some HTML Tags</h1><br />";
echo htmlentities($myHTML);

?>

答案 4 :(得分:-2)

你在Javascript中尝试过escape()函数吗? JavaScript escape() Function