PHP中htmlentities,htmlspecialchars,urlencode和base64_encode的使用及区别
2015-10-09 14:36
931 查看
htmlentities,htmlspecialchars,urlencode和base64_encode这几个函数都是php中经常使用的编码函数,有时候会混淆他们的使用,这里介绍一下他们各自的使用及区别。
先说htmlentities,htmlspecialchars:
两个的主要作用都是:就是让浏览器输出html代码,不去解析该html代码了,比如说在发帖的时候,为了不让其输入的html代码生效,可以使用htmlspecialchars。
两者区别:htmlentities转换所有的html标记,htmlspecialchars只格式化& ‘ ” < 和 > 这几个特殊符号。
看下面的例子:
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 的请求部分,同时它还便于将变量传递给下一页:
看下面的例子:
echo urlencode($url);
输出信息如下:
base64_encode的作用是对给定的字符串使用base64编码,设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体就需要用到该函数来编码。据说Base64-encoded后的数据要比原始数据多占用 33% 左右的空间。看下面的例子:
输出信息如下:
先说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
相关文章推荐
- PHP正则表达式的快速学习方法
- ThinkPHP让../Public在模板不解析(直接输出)的方法[原创]_php实例_脚本之家
- PHP异步执行技巧
- Xampp+Chrome+Sublime Text3+Xdebug调试PHP代码
- PHP中Closure类的使用方法及详解
- PHP CLI 模式详解
- Yii源码阅读笔记 - 路由解析
- PHP 开发中的外围资源性能分析(一)
- Yii源码阅读笔记 - 请求处理基本流程
- PHP 开发中的外围资源性能分析(一)
- 如何解决phpmyadmin导入数据库文件最大限制2048KB
- 《php和mysql web开发》笔记——第11章 使用MySQL从Web访问数据库
- PHP 二维关联数组去重
- 用Win8.1在局域网搭建FTP服务器的简单实现
- laravel中使用from_unixtime对查询日期格式化
- PHPstorm设置
- 为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment
- php学习基础篇之mysql基础1
- PHP DES 加解密
- PHP文件读写操作