1.什么是 html 标签,html 实体
.

html标签 描述 html实体
< less than &lt;
> great than &gt;

.
2.为什么需要转换

比如我们要在浏览器里显示代码,浏览器会把它当作 html 标签语言直接执行,解决方法就是将 html 标签转变为 html 实体再编写到代码中.

比如我们要显示<script>alert(1)</script>, 那么我们的代码中应该这样写:&lt;script&gt;alert(1)&lt;/script&gt;

既然代码&lt;script&gt;alert(1)&lt;/script&gt;显示的是<script>alert(1)</script>, 那么如果要显示&lt;script&gt;alert(1)&lt;/script&gt;; 又应该写怎么样的代码呢?

道理很简单,一段文本,如果在页面中的显示跟代码不一致,那说明肯定是里面包含了html的关键字,比如上一段代码中就包含了关键字&,如果想要在浏览器中显示&(html关键字),则需要在代码中用它对应的实体来替换掉,&的实体为&amp;, 因此要显示&lt;script&gt;alert(1)&lt;/script&gt;,需要的代码为&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;

关于html实体的说明及列表:http://baike.baidu.com/view/4757776.htm#3

3.php html系列函数

htmlspecialchars_decode()和html_entity_decode()将html实体转换为html标签,
htmlspecialchars()和htmlentities()将html标签转换为html实体。

<?php  
//首先声明一个变量并将一个带有html标签的字符串赋值给它  
$a = "<script>alert(1);</script>";  
echo $a; //弹出一个弹出框  
echo htmlentities($a); 
// 输出 &lt;script&gt;$nbspalert(1)&lt;/script&gt; 浏览器中显示 <script> alert(1) </script>  
echo htmlspecialchars($a); 
//同上  
echo htmlspecialchars(htmlspecialchars($a)); 
// 输出&amp;lt;script&amp;gt;$amp;nbspalert(1)&amp;lt;/script&amp;gt;浏览器中显示 &lt;script&gt;$nbspalert(1)&lt;/script&gt; 以此类推  
$b = htmlspecialchars(htmlspecialchars($a)); 
//注意,实际上 $b 的值为&amp;lt;script&amp;gt;$amp;nbspalert(1)&amp;lt;/script&amp;gt;   
echo htmlspecialchars_decode($b); 
// 输出 &lt;script&gt;$nbspalert(1)&lt;/script&gt; 浏览器中显示 <script> alert(1) </script>  

4.get_html_translation_table()函数
作用:函数返回 htmlentities() 和 htmlspecialchars() 函数使用的翻译表。

<?php
print_r (get_html_translation_table(HTML_SPECIALCHARS));
?>
<?php
print_r (get_html_translation_table(HTML_ENTITIES));
?>
作者 铁血 汉子 2017年8月23日
2024/03/28/03:50:49pm 2017/8/23/18:55:30
0 1969