解决substr()函数对中英文字符串截取时乱码问题

今天在获取数据用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;//输出字符串
	}

你可能感兴趣的:(php)