今天在获取数据用substr()截取字符串时因为数据中包含中文也有英文,中文是由两个字符串组成,导致要自己算有多少中文,麻烦的很所以我,就准备在项目中写一个公共方法(其实我有在书上看到过此类方法)再此共享给各位,有兴趣的可以看看:
//$str指的是字符串,$start指的是字符串的初始位置,$len截取的长度
function msubstr($str,$start,$len){
$strlen=$start+$len;//用$strlen 存储字符串的总长度(从字符串的起始位置到字符串的总长度)
for($i=0;$i<$strlen;$i++){//通过for循环语句,循环读取字符串
if(ord(substr($str,$i,1))>0xa0){//如果字符串的首字节的ASCII序列大于0xa0,则表示为汉字
$tmpstr.=substr($str,$i,2);//每次取出两位字符赋给变量$tmpstr,即等于一个汉字$i++;//变量自加1
else{//如果不是汉字,则每次取出一位字符赋给变量$tmpstr
$tmpstr.=substr($str,$i,1);
}
}
return $tmpstr;//输出字符串
}