PHP中经常遇到截取字符串(截取文字)的问题,对于简单的问题我们可以使用函数substr()来处理;但是最近遇到一个问题:需要对文章中的字数进行截取,文章使用的是UTF-8编码形式。问题来了,有些字占3个字节,有些则是两个字节,有的则是一个字节,显然,通过substr()来处理是不行的了——出现的都是一些乱码!
在网上寻找解决办法,后来终于把这个问题搞定了,方法是建立如下函数代码,然后对页面进行处理:
<?
function substr_utf8($string,$start,$length)
{ $chars = $string;
$i=0;
do{
if (preg_match ("/[0-9a-zA-Z]/", $chars[$i])){//纯英文
$m++;
}
else {$n++; }//非英文字节,
$k = $n/3+$m/2;
$l = $n/3+$m;//最终截取长度;$l = $n/3+$m*2?
$i++;
} while($k < $length);
$str1 = mb_substr($string,$start,$l,'utf-8');//保证不会出现乱码
return $str1;
}?>
该方法由aiou提供,在此表示感谢,具体页面看这里。
0
顶一下 0
踩一下
顶一下 0
踩一下




已有
