我们都知道,在PHP里对字符串的操作和数组的操作是最多的,生活中最常用到的字符串函数有strlen(),substr(),strpos(),strstr(),str_replace(),
但是在使用过程中我们可能会发现一些问题,上面提到的函数对中文字符串是不友好的,
举例,现在有一字符串 ‘华而不实,为所欲为’,这样一个字符串,我们想取到前四个字‘华而不实’,这个时候会用到php函数 substr()
<?php $str="华而不实,为所欲为"; echo substr($str,0,4);//第一个参数为要截取的字符串,第二个为起始点,第三个参数为要截取的长度
我们来运行一下,看到网页的执行效果

乱码,好像是忘记了加header 定义字符编码,现在我们加上header试一下
header("content-type:text/html;charset=utf-8"); 得到的结果是:

看到第一个字,华 已经出来了,但是后面是乱码,为什么会有这样的问题呢,
因为编码的不同,substr在识别中文的时候,utf-8格式的中文字符每个中文会占用三个字节,也就是取
四位的时候,只能取出第一个字的所有,和第二个字的第一个字节,所以会出现乱码的问题,那有没有
什么解决办法呢,是有的,为了解决这个问题,有一个mbstring 扩展,是为了中文字符串使用的,
函数只需要在之前的substr前加上mb_ 即可 为 mb_substr();
echo mb_substr($str,0,4,'utf-8');//前三个参数之前介绍过,第四个参数为当前中文的编码类型
我们都知道,中文也分不同的编码,utf-8 ,gb2312 ,gbk 这些,所以在使用mb_系列的函数时候,不要忘记加上编码哦
看一下效果

这一次就能正常显示要截取的字符串了,
同时 大部分的字符串函数需要涉及到中文的,mbstring扩展都有对应的函数,只需要在原函数前加上mb_就可以了,
然后参数最后加上字符编码,是不是很简单呢。

已有 0 位网友参与,快来吐槽:
发表评论