php实现中文字符串无乱码截取

在PHP开发中会常常用到字符串截取,有的时候字符串截取会出现乱码的状况,那么怎么解决这个问题呢,其实也很容易php

首先咱们要了解关于中英文占多少字节的问题。

ASCII码:一个中文汉字占两个字节的空间。

UTF-8编码:一个中文(含繁体)等于三个字节。

Unicode编码:一个中文(含繁体)等于两个字节。

下面咱们就经过几个简单的代码示例为你们详细介绍关于PHP截取中英字符串且无乱码的相关知识。

1、 substr() 截取字符串(是以字节为单位进行截取的)
<?php

ehco substr('PHP中文网', 0, 5);
substr()中第一个参数表示要截取的字符串,第二个参数表示从0位置开始截取,第三个参数表示截取长度。

截取“PHP中文网”前5个字节,结果以下:

如图显示乱码,也就是说当咱们使用substr函数进行中英文字符串截取时,会出现乱码,为何呢?由于substr函数截取字符串的单位是字节,在截取中文的时候会有不能完整截取的状况出现,因此会出现乱码的状况。

2、关于mb_substr()截取字符串

<?php

echo mb_substr('php中文网', 0, 5);

mb_substr:获取部分字符串。

截取“PHP中文网”前5个字符,结果以下:

如图截取了前五个字符,而且没有出现乱码。

注:mb_substr是根据字符数来执行截取字符串。

3、 mb_strcut() 截取字符串

<?php

echo mb_strcut("PHP中文网", 0, 7);

截取“PHP中文网”前7个字节,结果以下:

从图中能够看到,咱们要截取7个字节,可是只显示截取了“PHP中”这6个字节。因为一个汉字等于三个字节,那么这里第7个字节就不会显示了。
 综上所述,若是你们遇到要截取中文字符串并没有乱码的需求时,能够选择后两种方法(mb_substr()和mb_strcut())
相关文章
相关标签/搜索