php中html实体转义解码函数:1:htmlentities,html_entity_decode;2:htmlspecialchars,htmlspecialchars_decode;很多PHP开发的人员只知道后者,却不知道前者;前者是转义所有字符为html实体;后者只转义所规定的几种普通字符为html实体;
htmlspecialchars
htmlspecialchars — 将普通字符转换成HTML实体
说明
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )
只转义以下五种字符:
1. '&' => '&'
2. '"' => '"'
3. "'" => ''' (or ')
4. '<' => '<'
5. '>' => '>'
htmlspecialchars_decode
htmlspecialchars_decode — 将特殊的 HTML 实体转换回普通字符
说明
string htmlspecialchars_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ] )
此函数的作用和 htmlspecialchars() 刚好相反。它将特殊的HTML实体转换回普通字符。
被转换的实体有: &, " (没有设置 ENT_NOQUOTES 时), ' (设置了 ENT_QUOTES 时), < 以及>。
htmlentities
htmlentities — 将所有普通字符转换成HTML实体
说明
string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )
此函数是全部转换html实体,和htmlspecialchars()区别在于,这个函数是转义全部的字符,而htmlspecialchars()仅仅转义上面限定的5个特殊字符!
如果想要解码,需要用html_entity_decode() 函数;把 HTML 实体转换为字符。
html_entity_decode
html_entity_decode — 将所有的 HTML 实体转换回普通字符
说明
string html_entity_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") ]] )
<?php $str="<a href='https://wwww.fujieace.com'>付杰博客</a><script>alert('付杰');</script>"; echo htmlentities($str); echo '<br>'; echo htmlspecialchars($str); echo '<br>'; echo htmlspecialchars_decode($str); echo '<br>'; echo html_entity_decode($str);
由于博主没有用数据库来存取,直接是用的网页来查看的,因此转义的地方看不出来,如果你是把存取数据库的话,你就不能按照以上代码来用,存的时候用htmlspecialchars或htmlentities;取出来的时候可以根据自身的情况来看是否解码;如果要解码就用htmlspecialchars_decod或html_entity_decode;
重要提示:
htmlspecialchars()和 htmlspecialchars_decode()配合使用;
htmlentities()和 html_entity_decode()配合使用;
常用特殊字符列表:
特殊字符 说明 对应字符实体 < 小于号 < > 大于号 > 空格 & 和号 & " 双引号 " ' 撇号 ' © 版权 © ® 注册商标 ®