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程序设计有所帮助。