需要用到用PHP截取字符串,以往用的都是substr,突然发现不灵了,因为这次戒烟如你使用了UTF-8编码,经过查资料,原来UTF-8表示汉字是3个字符,而且据说还有两个字符的,没看懂,但想到一个汉字占两位,一个英文占一位,干脆用显示长度来计算吧!
PHP代码
- function iSubStr ($str, $len) {
- $i = 0;
- $tlen = 0;
- $tstr = '';
- while ($tlen < $len) {
- $chr = mb_substr($str, $i, 1, 'utf8');
- $chrLen = ord($chr) > 127 ? 2 : 1;
- if ($tlen + $chrLen > $len) break;
- $tstr .= $chr;
- $tlen += $chrLen;
- $i ++;
- }
- if ($tstr != $str) {
- $tstr .= '...';
- }
- return $tstr;
- }
该代码仅适用于UTF-8编码的字符串,输入参数分别是原字符串和长度,输出是截取后的字符串。
#1
