解决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;//输出字符串
	}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值