php中文字符串截取多种方法汇总
1.截取GB2312中文字符串
<?php <?php //截取中文字符串 functionmysubstr($str,$start,$len){ $tmpstr=""; $strlen=$start+$len; for($i=0;$i<$strlen;$i++){ if(ord(substr($str,$i,1))>0xa0){ $tmpstr.=substr($str,$i,2); $i++; }else $tmpstr.=substr($str,$i,1); } return$tmpstr; } ?>
2.截取utf8编码的多字节字符串
<?php <?php //截取utf8字符串 functionutf8Substr($str,$from,$len) { returnpreg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'. '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s', '$1',$str); } ?>
3.UTF-8、GB2312都支持的汉字截取函数
<?php <?php /* Utf-8、gb2312都支持的汉字截取函数 cut_str(字符串,截取长度,开始长度,编码); 编码默认为utf-8 开始长度默认为0 */ functioncut_str($string,$sublen,$start=0,$code='UTF-8') { if($code=='UTF-8') { $pa="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; preg_match_all($pa,$string,$t_string); if(count($t_string[0])-$start>$sublen)returnjoin('',array_slice($t_string[0],$start,$sublen))."..."; returnjoin('',array_slice($t_string[0],$start,$sublen)); } else { $start=$start*2; $sublen=$sublen*2; $strlen=strlen($string); $tmpstr=''; for($i=0;$i<$strlen;$i++) { if($i>=$start&&$i<($start+$sublen)) { if(ord(substr($string,$i,1))>129) { $tmpstr.=substr($string,$i,2); } else { $tmpstr.=substr($string,$i,1); } } if(ord(substr($string,$i,1))>129)$i++; } if(strlen($tmpstr)<$strlen)$tmpstr.="..."; return$tmpstr; } } $str="abcd需要截取的字符串"; echocut_str($str,8,0,'gb2312'); ?>
4.BugFree的字符截取函数
<?php /** *@packageBugFree *@version$Id:FunctionsMain.inc.php,v1.322005/09/2411:38:37wwccssExp$ * * *Returnpartofastring(Enhancethefunctionsubstr()) * *@authorChunshengWang<wwccss@263.net> *@paramstring$Stringthestringtocut. *@paramint$Lengththelengthofreturnedstring. *@parambooble$Appendwhetherappend"...":false|true *@returnstringthecuttedstring. */ functionsysSubStr($String,$Length,$Append=false) { if(strlen($String)<=$Length) { return$String; } else { $I=0; while($I<$Length) { $StringTMP=substr($String,$I,1); if(ord($StringTMP)>=224) { $StringTMP=substr($String,$I,3); $I=$I+3; } elseif(ord($StringTMP)>=192) { $StringTMP=substr($String,$I,2); $I=$I+2; } else { $I=$I+1; } $StringLast[]=$StringTMP; } $StringLast=implode("",$StringLast); if($Append) { $StringLast.="..."; } return$StringLast; } } $String="17test.info走在中国自动化测试的前沿"; $Length="18"; $Append=false; echosysSubStr($String,$Length,$Append); ?>
以上就是本文的全部内容,希望对大家有所帮助,希望大家继续关注毛票票的最新内容。