职称:PHP函数硕士;order()和chr()函数的应用
在第三期汉字编码研究系列中,PHP函数一章掌握了order()和chr()函数的应用。上一期【PHP基础篇讲解了ASCII码对照表和字符转换】,了解了ASCII码和字符转换的方法。但是在使用的时候,我发现字符和十进制之间的转换需要两个特殊的函数,order()函数将字符转换成十进制数,chr()函数转换成十进制数。一、order()函数的应用order()函数用于返回字符的ASCII值。最基本的用法是获取a的ASCII值。order(' a ')返回97。但在实际开发中,多用于获取字符截取功能中汉字高低位的小数位数。常见的汉字截取功能,请参考PHPWind或Discuz!论坛源代码中substrs()函数或cutstr()函数的原理是通过order()函数获取字符的ASCII码值。如果返回值大于127,则表示为汉字的一半,然后得到后一半组合成一个完整的字符,同时结合GBK或UTF-8等字符编码。以GBK编码为例,使用order()函数判断汉字,并返回每个汉字的ASCII值。代码如下。复制代码如下: $string='不要迷恋哥哥';$ length=strlen($ string);var _ dump($ string);//原文中文var _ dump($ length);//Length $结果=array();for($ I=0;$ i $长度;$ I){ if(order($ string[$ I])127){ $ result[]=$ string[$ I]。' '.$ string[$ I];} } var _ dump($ result);代码描述1、定义一个变量$string,它的值是string 2、获取变量的长度(字节数)3、打印变量和变量的长度4、通过for循环获取变量每个字节的值,并显示一个汉字的两个字节用空格隔开。结果如下。
插图:“不要迷恋哥哥”是5个汉字,共10个字节(一个汉字2个字节)。单独打印时,每个字节不能正常显示。如上所示,初始值保持不变。修改代码的for循环部分,以显示每个字节的ASCII值。复制代码如下: $ result=array();for($ I=0;$ i $长度;$ I){ if(order($ string[$ I])127){ $ result[]=order($ string[$ I])。' '.order($ string[$ I]);} } var _ dump($ result);如上,代码使用order()函数打印每个字符的ASCII值,结果如下。
通过order()函数转换后,可以正常查看每个字符的ASCII值。第二,chr()函数的应用chr()函数与order()函数相反,后者用于返回指定的字符,例如,chr(97)返回一个.结合上面的例子,只要得到汉字的ASCII值,就可以通过chr()函数组装汉字。代码如下。复制代码如下: $string='不要迷恋哥哥';$ length=strlen($ string);var _ dump($ string);//原文中文var _ dump($ length);//Length $结果=array();for($ I=0;$ i $长度;$ I){ if(order($ string[$ I])127){ $ result[]=order($ string[$ I])。' '.order($ string[$ I]);} } var _ dump($ result);foreach($ result as $ v){ $ decs=explode(',$ v);echo chr($decs[0])。chr(decs[1]);}结果如下图所示。
以上代码不直接输出汉字,而是打印出正常的汉字。原理是先获取每个字节的ASCII值,通过chr()函数转换成字节,再将两个字节组合成一个完整的汉字。通过对order()和chr()函数的讨论,我们初步了解了汉字的编码原理,了解了GBK编码中一个汉字有两个字节。我们使用order()和chr()函数来实现每个字节的转换方法。下一期汉字编码研究系列请关注汉字编码的转换原理。参考PHPWind和Discuz截取字符函数子字符串和cutstr性能比较。
版权声明:职称:PHP函数硕士;order()和chr()函数的应用是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。