如何在网页上显示HTML片段,而不需要将每个<替换为&lt;>和&gt;?

换句话说,是否有一个标记表示在点击结束标记之前不呈现HTML ?


当前回答

行之有效的HTML方法:

将&字符替换为& 将<字符替换为&lt; 将>字符替换为&gt; 可以选择用<pre>和/或<code>标记包围HTML示例。

其他回答

很简单.... 使用此xmp代码

    <xmp id="container">

&lt;xmp &gt;

    <p>a paragraph</p>

    &lt;/xmp &gt;

</xmp>

是否有一个标签表示在点击结束标签之前不呈现HTML ?

不,没有。在HTML中,除了转义某些字符外,没有其他方法:

& as & < as &lt;

(顺便说一句,没有必要转义>,但人们经常这样做是为了对称。)

当然,您应该将结果转义的HTML代码包围在<pre><code>…</code></pre>中,以(a)保留空格和换行符,并(b)将其标记为代码元素。

所有其他解决方案,如将代码包装到<textarea>或(已弃用)<xmp>元素,都会破坏1

向浏览器声明为XML的XHTML(通过HTTP Content-Type报头!-仅仅设置DOCTYPE是不够的)也可以使用CDATA部分:

<![CDATA[Your <code> here]]>

但这只适用于XML,而不适用于HTML,而且这也不是一个万无一失的解决方案,因为代码不能包含结束分隔符]]>。因此,即使在XML中,最简单、最健壮的解决方案也是通过转义。


1 .恰当的例子:

不;教室:100%;} < textarea readonly =“readonly > <p>电脑<textarea>说</textarea> <span>no.</span> < / textarea > < xmp > 计算机<xmp>说</xmp> <span>no.</span> < / xmp >

<code><?php $str='&lt;';echo htmlentities($str);?></code>

我发现这是最简单、最快和最紧凑的方法。

如果你的目标是显示你在同一页面的其他地方执行的代码块,你可以使用textContent(它是纯js和良好的支持:http://caniuse.com/#feat=textcontent)

<div id="myCode">
    <p>
        hello world
    </p>
</div>

<div id="loadHere"></div>


document.getElementById("myCode").textContent = document.getElementById("loadHere").innerHTML;

要在结果中获得多行格式,您需要在目标div上设置css样式“white-space: pre;”,并在每一行的末尾使用“\r\n”单独写入行。

这里是一个演示:https://jsfiddle.net/wphps3od/

与使用textarea相比,这种方法有一个优点:代码不会像在textarea中那样重新格式化。(比如&nbsp;在文本区域中完全删除)

在HTML ?不。

在XML / XHTML吗?您可以使用CDATA块。