PHP实现中文字符串截取无乱码
in 笔记 with 0 comment

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

in 笔记 with 0 comment

首先我们要了解关于中英文占多少字节的问题。
ASCII码:一个中文汉字占两个字节的空间。
UTF-8编码:一个中文(含繁体)等于三个字节。
Unicode编码:一个中文(含繁体)等于两个字节。

几个简单的代码示例

一、关于substr函数截取字符串

<?php echo substr("PHP中文网", 0, 5);?>

substr:返回字符串的子串。
substr()中第一个参数表示要截取的字符串,第二个参数表示从0位置开始截取,第三个参数表示截取长度。
截取“PHP中文网”前5个字节,结果:php??(乱码)
也就是说当我们使用substr函数进行中英文字符串截取时,会出现乱码。

二、关于mb_substr函数截取字符串

<?php echo mb_substr("PHP中文网", 0, 5);?>

mb_substr:获取部分字符串。
截取“PHP中文网”前5个字符,结果:php中文;截取了前五个字符,并且没有出现乱码。
注:mb_substr是根据字符数(部分中英文)来执行截取字符串。

三、关于mb_strcut函数截取字符串

<?php echo mb_strcut("PHP中文网", 0, 7);?>

截取“PHP中文网”前7个字节,结果:php中;可以看到,我们要截取7个字节,但是只显示截取了“PHP中”这6个字节。由于一个汉字等于三个字节,那么这里第7个字节就不会显示了。

Comments are closed.