htmlspecialchars()和htmlspecialchars_decode()
- 加密:htmlspecialchars()函数把一些预定义的字符转换为 HTML 实体。
这些预定义的字符是:
& (和号) 成为 &
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
例子:一个html页面
<script type="text/javascript" src="/editor/kindeditor.js"></script>
<script type="text/javascript" src="/editor/lang/zh_CN.js"></script>
<form class="form-horizontal" name="sub_td" id="cpt_main" action="/content/add" role="form" enctype="multipart/form-data" method="post" onsubmit="" />
<textarea style="width:800px; height:450px;" class="content" name="content" id="content"></textarea>
</from>
<script>
KindEditor.ready(function(K) {
window.editor = K.create('#content',{
// 指定大小
width:'800px',
height:'400px',
});
});
// php
KindEditor.ready(function(K) {
K.create('#content', {
uploadJson : '/editor/php/upload_json.php',
fileManagerJson : '/editor/php/file_manager_json.php',
allowFileManager : true
});
});
</script>
提交到控制器页面content.php,将提交内容加密
$contents = htmlspecialchars($_POST['content'],ENT_COMPAT ,'utf-8');
$newdata['content'] = $contents;
- 解密:htmlspecialchars_decode() 把一些预定义的 HTML 实体转换为字符
前端解密读取数据
<div class="new_con">
<?php echo htmlspecialchars_decode($condata['Newsdata']['content']);?>
</div>
htmlentities和htmlspecialchars 的区别
htmlspecialchars 只转化几个html代码,
htmlentities 却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。
$str='<a href="test.html">测试页面</a>';
echo htmlentities($str);
// <a href="test.html">²âÊÔÒ³Ãæ</a>
$str='<a href="test.html">测试页面</a>';
echo htmlspecialchars($str);
// <a href="test.html">测试页面</a>
结论是,有中文的时候,最好用 htmlspecialchars ,否则可能乱码
结论:htmlentities 和 htmlspecialchars 的区别在于 htmlentities 会转化所有的 html character entity,而htmlspecialchars 只会转化手册上列出的几个 html character entity (也就是会影响 html 解析的那几个基本字符)。一般来说,使用 htmlspecialchars 转化掉基本字符就已经足够了,没有必要使用 htmlentities。实在要使用 htmlentities 时,要注意为第三个参数传递正确的编码。