在页面中,除了xmp,textarea以及js转义外,还有什么办法可以让html标签在不被浏览器解析而正常显示呢?
https://segmentfault.com/q/1010000002516795
要符合“内部的html标签不被解析”,我们根据HTML5的标准,分元素类别讨论吧:
Void Elements,如br等。
他们不允许有内部文本。
Foreign Elements,如svg和mathml的相关标签
跟xml语法一致,他们内部文本若不想被当作标签解析,只有用<![CDATA[和]]>包裹
RCDATA elements:即textarea 和 title。
他们不能嵌套自身,内部的实体会被转义,内部的<不会被当作tag open解析。
因此,他们内部的其他标签自然不会被解析。
Raw text elements:即script 和 style。
他们不能嵌套自身,内部的实体不会被转义,内部的<不会被当作tag open解析。
因此,他们内部的其他标签自然不会被解析。
Normal elements,普通的元素,基本上上列没有提及的都属于这一列,包括pre和code。
他们的特点是,内部的实体会被转义,内部的<可能根据上下文,被当作tag open解析。
他们内部的文本若想展示标签文本而不解析,必须先转义<为<,>为>
如果目标是让HTML标签文本内容正常显示而不被解析,最简单的方案是嵌入到
php下实际操作:
echo '<textarea style="display:none" id= modelContent'.$row[$i][id].' value=<script type="text/template">'.$row[$i][content].'</textarea></script>';
复制代码
$tmp=htmlspecialchars($row[$i][content], ENT_QUOTES);
echo '<textarea style="display:none" id= modelContent'.$row[$i][id].'>'.$tmp.'</textarea>';
复制代码
http://cn2.php.net/htmlspecialchars
http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
htmlspecialchars(string,flags,character-set,double_encode)
第一种方法:用php的highlight高亮显示php代码
highlight_file("index.php");
第二种方法:把特殊字符转码
echo html_entity_decode(htmlentities("<div>sssss</div>"));
复制代码