《PHP学习:PHP也能干大事之PHP中的编码解码详解》要点:
本文介绍了PHP学习:PHP也能干大事之PHP中的编码解码详解,希望对您有用。如果有疑问,可以联系我们。
写在前面PHP编程
PHP也能干大事是我总结的PHP语法特性及相关函数类库的经典用法,并不一定是真正能实现四两拨千斤的功效,但是掌握这些办法,可以在你的工作和学习上有一些帮助,希望大家能集思广益,将《PHP也能干大事》丰富得更精彩!转载请注明出处(jb51.net)PHP编程
二、前言PHP编程
PHP是常见的脚本语言,主要是因为其简单易学,上手快,几乎50%以上的Web程序都有PHP的身影(不完全统计).PHP为开发这提供了丰富的函数和API接口,这使得我们能够非常方便地使用其强大的内置函数及扩展,本文是《PHP也能干大事》系列的第一篇,主要总结PHP在编解码、进制转换方面的知识.PHP编程
PHP编程
三、PHP编解码PHP编程
1、ASCII编解码PHP编程
ASCII(发音:英语发音:/ˈæski/ ASS-kee,American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统.它主要用于显示现代英语,而其扩展版本EASCII则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646.由于万维网使得ASCII广为通用,直到2007年12月,逐渐被Unicode取代. https://zh.wikipedia.org/zh/ASCIIPHP编程
PHP编程
PHP基本函数内置了ASCII的编解码函数,这使得我们能轻松进行ASCII编解码.PHP编程
int ord ( string $string ) //返回字符串 string 第一个字符的 ASCII 码值.
string chr ( int $ascii ) //返回相对应于 ascii 所指定的单个字符.
PHP编程
2、URL编解码PHP编程
URL编码是一种浏览器用来打包表单输入的格式.浏览器从表单中获取所有的name和其中的值,将它们以name/value参数编码作为URL的一部分或者分离地发给服务器.比如我们在拜访网页中,会出现很多带有%的字符串,这就是URL编码.PHP编程
URL编码一般采用UTF-8编码格式,所以建议采用UTF-8格式传递数据.正常意义的URL编码可以理解为ASCII码的16进制前加上%,无大小写区分.
PHP编程
两组函数用法一样,除了对于+和空格的转换处理上:rawurlencode将空格转为%20,不将+转为空格;urlencode则不一样.PHP编程
3、Base64编解码PHP编程
Base64是一种基于64个可打印字符来表示二进制数据的表示办法.由于2的6次方等于64,所以每6个位元为一个单元,对应某个可打印字符.三个字节有24个位元,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示.它可用来作为电子邮件的传输编码.使用的字符包括大小写字母各26个,加上10个数字,和加号「+」,斜杠「/」,一共64个字符,等号「=」用来作为后缀用途.完整的base64定义可见RFC 1421和RFC 2045.编码后的数据比原始数据略长,为原来的4/3.在电子邮件中,根据RFC 822规定,每76个字符,还需要加上一个回车换行.可以估算编码后数据长度大约为原长的135.1%. https://zh.wikipedia.org/zh/Base64PHP编程
string base64_encode(string $data) //使用 base64 对 data 进行编码.
string base64_decode (string $data [, bool $strict = false ]) //对 base64 编码的 data 进行解码.PHP编程
案例:HTML页面中img标签可以在src属性中采用base64编码方式,来输出图片,这样可以减少HTTP哀求次数.
PHP编程
4、HTML实体编解码PHP编程
一些字符在HTML中是预留的,拥有特殊的含义,比如小于号「<」用于定义HTML标签的开始.如果我们希望浏览器正确地显示这些字符,我们必须在 HTML 源码中插入字符实体.字符实体有三部分:一个和号「&」 和一个实体名称(或者一个 「#」 和一个实体编号),以及一个分号「;」.http://www.ascii.cl/htmlcodes.htmPHP编程
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = “UTF-8″ [, bool $double_encode = true ]]] ) //对包含如下HTML特殊字符进行HTML实体编码
1.'&' (ampersand) becomes ‘&'
2.'”‘ (double quote) becomes ‘"' when ENT_NOQUOTES is not set.
3.”‘” (single quote) becomes ‘'' (or ') only when ENT_QUOTES is set.
4.'<‘ (less than) becomes ‘<'
5.'>' (greater than) becomes ‘>'PHP编程
string htmlspecialchars_decode (string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ]) //此函数的作用和 htmlspecialchars() 刚好相反.它将特殊的HTML实体转换回普通字符.
还有功能相同的函数htmlentities/html_entity_decode,这对函数甚至对汉字都进行了HTML实体编码,而且会产生乱码,所以建议使用htmlspecialchars进行编解码.PHP编程
案例:防止XSS跨站脚本攻击,需要对用户提交的数据进行HTML实体转换:PHP编程
5、二进制、八进制、十进制、十六进制相互转换PHP编程
进制之间的转换这里没什么好说的,总之都差不多,只要记住多少进制就是逢多少进一位,比如10进制就是9的下一位就是10,二进制、八进制、十六进制以此类推.PHP编程
string bin2hex (string $str) //返回 ASCII 字符串,为参数 str 的十六进制表示.转换使用字节方式,高四位字节优先.
string hex2bin (string $data) //转换十六进制字符串为二进制字符串.
number bindec (string $binary_string) //返回 binary_string 参数所表示的二进制数的十进制等价值.
string decbin (int $number) //返回一字符串,包含有给定 number 参数的二进制表示.所能转换的最大数值为十进制的 4294967295,其结果为 32 个 1 的字符串.
number octdec (string $octal_string) //返回 octal_string 参数所表示的八进制数的十进制等值.
string decoct (int $number) //返回一字符串,包含有给定 number 参数的八进制表示.所能转换的最大数值为十进制的 4294967295,其结果为 “37777777777”.
string base_convert (string $number , int $frombase , int $tobase) //任意进制转换,返回一字符串,包含 number 以 tobase 进制的表示.number 本身的进制由 frombase 指定.frombase 和 tobase 都只能在 2 和 36 之间(包括 2 和 36).高于十进制的数字用字母 a-z 表示,例如 a 表示 10,b 表示 11 以及 z 表示 35.PHP编程
6 、GBK、UTF-8字符编码转换PHP编程
在写代码过程中,经常遇到编码问题而引发的乱码.其实解决编码问题非常简单,只要使用一种编码即可,一般来说,采用万国码――UTF-8是最好的选择.PHP编程
这里说的编码是文字编码和文件存储的编码,当然,不得不提到系统的编码的差异性:PHP编程
系统 编码 字符结尾
Windows GBK \r\n
*nix UTF-8 \nPHP编程
所以在处理特殊字符的时候要特别注意.PHP编程
常见的编码有GBK、UTF-8等等,函数使用上一般采用两种:PHP编程
string mb_convert_encoding (string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ]) //将 string 类型 str 的字符编码从可选的 from_encoding 转换到 to_encoding.
string iconv (string $in_charset , string $out_charset , string $str) //将字符串 str 从 in_charset 转换编码到 out_charset.PHP编程
案例:Windows系统,架设了一个WAMP服务器,将如下脚本另存为一个UTF-8编码的php文件,即可通过浏览器查看无乱码的php目录里的文件;如果不是用mb_convert_encoding转码,将直接导致输出乱码(Windows作为服务器).PHP编程
编码是数据的处理的基础,所以在PHP的编程开发过程中是相当重要的.对于PHP的处理办法,应用在编程中还需要数量掌握,特别有些相似函数要如何区分.转载请注明出处(jb51.net)PHP编程
《PHP学习:PHP也能干大事之PHP中的编码解码详解》是否对您有启发,欢迎查看更多与《PHP学习:PHP也能干大事之PHP中的编码解码详解》相关教程,学精学透。维易PHP学院为您提供精彩教程。