首页 > php教程 > 正文

「服务器」如果PHP中没有mb系列函数,那如何切割多字节字符串

转载 2019-04-15 0 9

在PHP编程中,多字节字符串切割,是经常碰到的需求。对于此需求,我们经常使用的可能就是mb系列函数,例如下面的方案一。那如果我们不使用mb系列函数,又该如何处理呢?下面针对此问题,我们将进行探讨。

需求

如果需要将可能含有中文的字符串进行拆分成数组,我们下面以 utf-8 编码为例。

解决方案一

我习惯的方法可能是:

「服务器」如果PHP中没有mb系列函数,那如何切割多字节字符串

假如我们没装mb扩展怎么办?

解决方案二

今天看到一份代码,别人是这么写的:

「服务器」如果PHP中没有mb系列函数,那如何切割多字节字符串

代码解读

strlen计算的是字节数,而直接使用$str[x]就沿用了c语言里面char数组和字符串的习惯,表示按字节来读取$str,也就是说每次读取的数据的ascii码值不可能大于255。而php里使用ord来获取ascii码值。

切割规则如下

「服务器」如果PHP中没有mb系列函数,那如何切割多字节字符串

为什么呢?

Unicode

Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。

UTF-8

UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8 的编码规则很简单,只有二条:

  1. 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的(能容纳0~127)。

  2. 对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

下表总结了编码规则,字母x表示可用编码的位:

「服务器」如果PHP中没有mb系列函数,那如何切割多字节字符串

想必看了这个表,大家就能明白了吧。


本文转载自互联网,如侵犯了你的权益,请立即联系告知,谢谢!

转载地址:https://mengkang.net/1129.html

相关文章


  • 盘点:PHP常用的HTML标签相关的字符串格式化函数,你知道几个?
  • 重蔚php学习第三十二天笔记数据库范式,及第三十一天笔记总结
  • php 用Curl提交数据「含有多维数组和文件上传」的处理方法
  • 手机视频采集PHP程序网站静态化利于SEO适合做流流量站
  • PHP类库分享,通过搜狐社交网站和ID来验证登陆网站
  • 扣丁学堂PHP培训告诉你怎么调用其他文件中的类
  • 号外号外!【猎豹网校 】完整PHP和MySQL Web开发初级高级教程下载
  • 【干货分享】源码时代最新PHP从入门到实战视频教程网盘下载