牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP中htmlentities,htmlspecialchars,urlencode和base64_encode的使用及区别

创建时间:2015-10-09 投稿人: 浏览次数:1231

htmlentities,htmlspecialchars,urlencode和base64_encode这几个函数都是php中经常使用的编码函数,有时候会混淆他们的使用,这里介绍一下他们各自的使用及区别。

先说htmlentities,htmlspecialchars:

两个的主要作用都是:就是让浏览器输出html代码,不去解析该html代码了,比如说在发帖的时候,为了不让其输入的html代码生效,可以使用htmlspecialchars。

两者区别:htmlentities转换所有的html标记,htmlspecialchars只格式化& ‘ ” < 和 > 这几个特殊符号。

看下面的例子:

$str = "似水流年";

echo htmlentities($str).”
“;
echo htmlentities($str, ENT_COMPAT , “UTF-8″).”
“;
echo htmlspecialchars($str).”
“;

输出结果如下:

<a href=”http://z132.com”>似水æµ�å¹´</a>
<a href=”http://z132.com”>似水流年</a>
<a href=”http://z132.com”>似水流年</a>

urlencode作用:将字符串中除了 “-_.” 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码 与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方 式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同。此函数便于将字符串编 码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页:

看下面的例子:

$url = "http://www.baidu.com/s?wd=似水流年&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&rsv_sug3=1&rsv_sug=1&rsv_sug1=1&rsv_su
g4=21";

echo urlencode($url);

输出信息如下:

http%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%E4%BC%BC%E6%B0%B4%E6%B5%81%E5%B9%B4%26rsv_spt%3D1%26issp%3D1%26rsv_bp%3D0%26ie%3Dutf-8%26tn%3Dbaiduhome_pg%26rsv_sug3%3D1%26rsv_sug%3D1%26rsv_sug1%3D1%26rsv_sug4%3D21

base64_encode的作用是对给定的字符串使用base64编码,设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体就需要用到该函数来编码。据说Base64-encoded后的数据要比原始数据多占用 33% 左右的空间。看下面的例子:

echo base64_encode("base64编码");

输出信息如下:

YmFzZTY057yW56CB

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。