PHP截取字符串---汉字算2个字符并且防止截出乱码
来源:互联网 发布:淘宝未收到货显示签收 编辑:程序博客网 时间:2024/05/22 01:35
以前我处理截取字符串为了防止截出乱码都是把汉字和英文当一个字符处理。
但这样处理非常不利于上下行文字对齐。
最后想了如下办法。。虽然不高效,但算是解决问题了……
/** * 截取字符串(汉字算2个字符并且防止截出乱码--目前只支持从第0位开始截取) * * @param String $string 要截取的字符串 * @param Int $start 从第几位开始截 * @param Int $length 要截取的长度 * @param String $fixStr 当字符长度大于$end时,给字符追加的字符 */function s_substr($string,$start,$length = null,$fixStr = ''){ if (!$string || empty($string)) { return $string; } $maxLen = ($length) ? $length - $start : $start; //如果字符总长度大于要截取的长度,那么少截取“$fixStr长度”个字符,追加$fixStr if (strlen($string) > $maxLen) { $maxLen = $maxLen - strlen($fixStr); } for ($i = $start; $i < $maxLen; $i++) { if (ord(substr($string, $i, 1)) > 0xa0) { if ($i + 1 == $maxLen) { //如果截取的最后一字是汉字,那么舍弃该汉字,结束截取 break; } else { //如果是中文,截取2个字符 $strRes .= substr($string, $i, 2); $i++; } } else { //如果是英文,截取1个字符 $strRes .= substr($string, $i, 1); } } if (strlen($string) > $maxLen) { $strRes .= $fixStr; } return $strRes;}
例:
$str = 'a我b们c是中国人';echo s_substr($str,0,10,'..');目前只支持从第0位开始截取,还有待完善。。。
- PHP截取字符串---汉字算2个字符并且防止截出乱码
- php字符串截取防止乱码
- php 截取中午字符串防止乱码
- php 截取汉字字符串
- php截取字符串,一个汉字按两个字符计算
- 截取GB2312以及GBK编码的字符串,从第一个字符开始截取,2个长度代表一个汉字
- PHP截取汉字乱码问题
- 截取字符串防止中文乱码
- PHP中处理截取汉字,出现乱码问题的2个类
- PHP中处理截取汉字,出现乱码问题的2个类
- PHP中处理截取汉字,出现乱码问题的2个类
- php 中文截取防止乱码
- PHP 中文字符串截取无乱码的方法以及php汉字截取函数_preg_split()
- gb2312汉字截取乱码 UTF8 中文乱码 汉字截取乱码 PHP截取汉字乱码
- PHP 字符截取没有乱码
- 防止汉字乱码,转化UTF-8字符
- 求中英文混合字符串长度,中英文混合字符串截取(汉字2个字节,字母数字等1个字节),字符转ASCII码,ASCII码转字符
- utf-8汉字字符串截取无乱码
- android 全志a10(2.3.4)开发二(linux内核编译及源码编译)
- pngcrush caught libpng error: Not enough image data
- java获取本机的ip地址
- 安装Sublime Text 2插件的方法:
- ARM处理器的一些基本常识
- PHP截取字符串---汉字算2个字符并且防止截出乱码
- jquery刷新页面
- Linux I2C 几个结构体间的关系
- Line-in 和Mic-in的区别
- 一个典型kernel bug的追踪之(一):出错现场分析
- Android IPC 通讯机制源码分析
- java调用SAP RFC函数
- [转]文字垂直居中
- CSS Overflow属性详解