php截取中英文字符串函数最可行方案

在忙一个网站的编程,遇到截取字符串的问题,自己编的程序总是出现乱码,发现中文字符占3个字节,中英文穿插的字符串截取就会出错。在网上搜索到了很多程序,实验的结果都不理想,不过最终还是找到了一个最简单实用的程序,和大家共享一下。我使用utf-8编码编写php,经多次试验没有出现异常,程序代码如下:


< ? function cut($Str, $Length) {//$Str为截取字符串,$Length为需要截取的长度 global $s; $i = 0; $l = 0; $ll = strlen($Str); $s = $Str; $f = true; while ($i <= $ll) { if (ord($Str{$i}) < 0x80) { $l++; $i++; } else if (ord($Str{$i}) < 0xe0) { $l++; $i += 2; } else if (ord($Str{$i}) < 0xf0) { $l += 2; $i += 3; } else if (ord($Str{$i}) < 0xf8) { $l += 1; $i += 4; } else if (ord($Str{$i}) < 0xfc) { $l += 1; $i += 5; } else if (ord($Str{$i}) < 0xfe) { $l += 1; $i += 6; } if (($l >= $Length - 1) && $f) {
$s = substr($Str, 0, $i);
$f = false;
}

if (($l > $Length) && ($i < $ll)) { $s = $s . '...'; break; //如果进行了截取,字符串末尾加省略符号“...” } } return $s; } ?>

来源:http://www.yuelao.net/modules.php?name=News&file=print&sid=217