打开源码,创造原代码中利用了substr函数来截取字符串。在php中,substr函数是严格按字节数来截取字符串,虽然一个中笔墨符为3个字节,如果仅以3的倍数来进行截取,字符串中一旦涌现字母、数字等单字节字符而没有在截取提高行判断处理,就很随意马虎造成涌现截取到半个中笔墨符的情形。
例如如下代码,
$str="活泼枫叶6c的头条号";echo substr($str,0,15);
运行的结果为

活泼枫叶6c�
虽然截取的15个字符,由于6c两个字符只占2个字节,打乱了字符串的规律,以是结果会涌现半个字符。
说到这里,可能有些小伙伴会想在截取前先对字符串进行一下处理,或者自己写一个函数。实在大可不必这么麻烦,php已经为我们供应理解决方案。
1、按字符数量截取字符串的mb_substr
例如
$str="活泼枫叶6c的头条号";echo mb_substr($str,0,7);
运行的结果为
活泼枫叶6c的
须要截取几个字,参数就写几个字,一览无余。
2、按字节截取字符串的mb_strcut
例如
$str="活泼枫叶6c的头条号";echo mb_strcut($str,0,15);
运行结果为
活泼枫叶6c
可以看到,虽然mb_strcut也是按字节截取字符串,但它不会截断字符。
在PHP中,substr虽然用得很多,但要对中笔墨符串进行截取时,应根据须要选择mb_substr或mb_strcut,从而避免涌现半个字符乱码的情形。