php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
本文实例讲述了php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8用法。分享给大家供大家参考,具体如下:
/* *gb2312中文字符串截取 */ functionsubstr_for_gb2312($str,$start,$len=null) { $totlelength=strlen($str); //特例情况 if($len==null)$len=$totlelength; if($len==0)return""; if($len>=$totlelength&&$start==0)return$str; if($start>$totlelength)return""; //分析$start if($start<0)//$start<0时,转化为$start>0时的定位. { if(abs($start)>=$totlelength)$start=0; else$start=$totlelength-abs($start); } //确定起始位置,当起始位拆分某汉字时,返回值包含此汉字. if($start>0) { $i=$start-1; $flag=-1; while($i>=0) { if(ord(substr($str,$i,1))>160) { $flag=-1*$flag; } elsebreak; $i--; } if($flag==1) { $start=$start-1; $len++;//保证不位移. } } $str=substr($str,$start);//截除字符串$str的$start位前的字符 $totlelength=strlen($str); //确定结束位置,当结束位拆分某汉字时,返回值不包含此汉字. if($len<0)$len=$totlelength-abs($len); if($len<=0)return""; $i=min($len,$totlelength); $i--; $flag=-1; while($i>=0) { if(ord(substr($str,$i,1))>160) { $flag=-1*$flag; } elsebreak; $i--; } if($flag==1) $len=$len-1; $subit=substr($str,0,$len); return$subit; } /****************************************************************** *PHP截取UTF-8字符串,解决半字符问题。 *英文、数字(半角)为1字节(8位),中文(全角)为3字节 *@return取出的字符串,当$len小于等于0时,会返回整个字符串 *@param$str源字符串 *$len左边的子串的长度 ****************************************************************/ functionsubstr_for_utf($str,$len) { for($i=0;$i<$len;$i++) { $temp_str=substr($str,0,1); if(ord($temp_str)>127) { $i++; if($i<$len) { $new_str[]=substr($str,0,3); $str=substr($str,3); } } else { $new_str[]=substr($str,0,1); $str=substr($str,1); } } returnjoin($new_str); } ?> /*带start位置的utf8截取函数*/ functionutf8_substr($string,$start,$length){ preg_match_all('/[/x00-/x7F]|[/xC2-/xDF][/x80-/xBF]|[/xE0-/xEF][/x80-/xBF][/x80-/xBF]|[/xF0-/xF4][/x80-/xBF][/x80-/xBF][/x80-/x BF]/',$string,$rs); $out=''; $size=count($rs[0]); $end=$start+$length; if($end>$size){ $end=$size; } for($i=$start;$i<$end;$i++){ $out.=$rs[0][$i]; } return$out; }
补充:小编在这里推荐一款本站的php格式化美化的排版工具帮助大家在以后的PHP程序设计中进行代码排版:
php代码在线格式化美化工具:
http://tools.jb51.net/code/phpformat
另外,由于php属于C语言风格,因此下面这款工具同样可以实现php代码的格式化:
C语言风格/HTML/CSS/json代码格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数学运算技巧总结》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。