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

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


当前回答

一种简单的方法来显示代码将包括它在一个文本区域和添加禁用属性,所以它是不可编辑的。

<textarea disabled> code </textarea>

希望这能帮助那些寻找简单方法完成工作的人。


但是警告,这不会为你转义标签,正如你在这里看到的(下面显然是行不通的):

textarea残疾> < 这是创建textarea的代码: textarea > < textarea > < / textarea > < /

其他回答

行之有效的HTML方法:

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

我是这样做的:

$str = file_get_contents("my-code-file.php");
echo "<textarea disabled='true' style='border: none;background-color:white;'>";
echo $str;
echo "</textarea>";

已废弃的<xmp>标记实际上就是这样做的,但它不再是XHTML规范的一部分。尽管它在当前所有浏览器中仍然有效。

这里有另一个想法,一个hack/parlor trick,你可以把代码放在一个文本区域,像这样:

<textarea disabled="true" style="border: none;background-color:white;">
    <p>test</p>
</textarea>

将尖括号和这样的代码放在文本区域内是无效的HTML,在不同的浏览器中会导致未定义的行为。在Internet Explorer中,HTML是解释的,而Mozilla、Chrome和Safari则不解释。

如果你想要它是不可编辑的,看起来不同,那么你可以很容易地使用CSS样式。唯一的问题是浏览器会在右下角添加一个小的拖动句柄来调整方框的大小。或者,尝试使用input标记。

正确的方式注入代码到你的文本区域是使用服务器端语言,比如PHP:

<textarea disabled="true" style="border: none;background-color:white;">
    <?php echo '<p>test</p>'; ?>
</textarea>

然后,它绕过html解释器,并在所有浏览器中一致地将未解释的文本放入文本区域。

除此之外,如果使用静态HTML,唯一的方法是自己转义代码,如果使用这种技术,则使用服务器端方法,如。net的HtmlEncode()。

你可以试试:

你好!下面是一些代码: < xmp > < div id = "你好" > < / div > < / xmp >

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

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