当前位置:Gxlcms > PHP教程 > PHP截取中文字符串方法

PHP截取中文字符串方法

时间:2021-07-01 10:21:17 帮助过:14人阅读

PHP 截取中文字符串方法总结

1. 截取GB2312中文字符串

  1. < ?php <br>//截取中文字符串<br>function mysubstr($str, $start, $len) {<br> $tmpstr = "";<br> $strlen = $start + $len;<br> for($i = 0; $i < $strlen; $i++) {<br> if(ord(substr($str, $i, 1)) > 0xa0) {<br> $tmpstr .= substr($str, $i, 2);<br> $i++;<br> } else<br> $tmpstr .= substr($str, $i, 1);<br> }<br> return $tmpstr;<br>}<br>?>

2. 截取utf8编码的多字节字符串

  1. < ?php<br>//截取utf8字符串<br>function utf8Substr($str, $from, $len)<br>{<br> return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.<br> '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',<br> '$1',$str);<br>}<br>?>

3. UTF-8、GB2312都支持的汉字截取函数

  1. < ?php<br>/* <br>Utf-8、gb2312都支持的汉字截取函数 <br>cut_str(字符串, 截取长度, 开始长度, 编码); <br>编码默认为 utf-8 <br>开始长度默认为 0 <br>*/ <br> <br>function cut_str($string, $sublen, $start = 0, $code = 'UTF-8') <br>{ <br> if($code == 'UTF-8') <br> { <br> $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]/"; <br> preg_match_all($pa, $string, $t_string); <br> <br> if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."..."; <br> return join('', array_slice($t_string[0], $start, $sublen)); <br> } <br> else <br> { <br> $start = $start*2; <br> $sublen = $sublen*2; <br> $strlen = strlen($string); <br> $tmpstr = ''; <br> <br> for($i=0; $i< $strlen; $i++) <br> { <br> if($i>=$start && $i< ($start+$sublen)) <br> { <br> if(ord(substr($string, $i, 1))>129) <br> { <br> $tmpstr.= substr($string, $i, 2); <br> } <br> else <br> { <br> $tmpstr.= substr($string, $i, 1); <br> } <br> } <br> if(ord(substr($string, $i, 1))>129) $i++; <br> } <br> if(strlen($tmpstr)< $strlen ) $tmpstr.= "..."; <br> return $tmpstr; <br> } <br>} <br> <br>$str = "abcd需要截取的字符串"; <br>echo cut_str($str, 8, 0, 'gb2312'); <br>?>

4. BugFree 的字符截取函数

  1. < ?php <br>/** <br> * @package BugFree <br> * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $ <br> * <br> * <br> * Return part of a string(Enhance the function substr()) <br> * <br> * @author Chunsheng Wang <wwccss@263.net> <br> * @param string $String the string to cut. <br> * @param int $Length the length of returned string. <br> * @param booble $Append whether append "...": false|true <br> * @return string the cutted string. <br> */ <br>function sysSubStr($String,$Length,$Append = false) <br>{ <br> if (strlen($String) < = $Length ) <br> { <br> return $String; <br> } <br> else <br> { <br> $I = 0; <br> while ($I < $Length) <br> { <br> $StringTMP = substr($String,$I,1); <br> if ( ord($StringTMP) >=224 ) <br> { <br> $StringTMP = substr($String,$I,3); <br> $I = $I + 3; <br> } <br> elseif( ord($StringTMP) >=192 ) <br> { <br> $StringTMP = substr($String,$I,2); <br> $I = $I + 2; <br> } <br> else <br> { <br> $I = $I + 1; <br> } <br> $StringLast[] = $StringTMP; <br> } <br> $StringLast = implode("",$StringLast); <br> if($Append) <br> { <br> $StringLast .= "..."; <br> } <br> return $StringLast; <br> } <br>} <br> <br>$String = "CodeBit.cn -- 简单、精彩、通用"; <br>$Length = "18"; <br>$Append = false; <br>echo sysSubStr($String,$Length,$Append); <br>?></wwccss@263.net>

人气教程排行