php 中文字符串截取的四个函数
内容摘要
这篇文章主要为大家详细介绍了php 中文字符串截取的四个函数,具有一定的参考价值,可以用来参考一下。
四个截取php中文字符串的代码,包括截取GB2312中文字符串、截取utf8编码
四个截取php中文字符串的代码,包括截取GB2312中文字符串、截取utf8编码
文章正文
这篇文章主要为大家详细介绍了php 中文字符串截取的四个函数,具有一定的参考价值,可以用来参考一下。
四个截取php中文字符串的代码,包括截取GB2312中文字符串、截取utf8编码的多字节字符串、UTF-8、GB2312都支持的汉字截取函数、BugFree 的字符截取函数。1、截取GB2312中文字符串1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <code class = "php" > <?php //截取中文字符串 function mysubstr( $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 ; } ?> /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <code class = "php" > <?php //截取utf8字符串 function utf8Substr( $str , $from , $len ) { return preg_replace( '#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $from . '}' . '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $len . '}).*#s' , '$1' , $str ); } ?> /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <code class = "php" > <?php /* @Utf-8、gb2312都支持的汉字截取函数 @cut_str(字符串, 截取长度, 开始长度, 编码); @编码默认为 utf-8 @开始长度默认为 0 */ function cut_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 ) return join( '' , array_slice ( $t_string [0], $start , $sublen )). "..." ; return join( '' , 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需要截取的字符串" ; echo cut_str( $str , 8, 0, 'gb2312' ); ?> /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <code class = "php" > <?php /** * @package BugFree * @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $ * @http://www.jbxue.com * * Return part of a string(Enhance the function substr()) * * @author Chunsheng Wang <wwccss@263.net> * @param string $String the string to cut. * @param int $Length the length of returned string. * @param booble $Append whether append "...": false|true * @return string the cutted string. */ function sysSubStr( $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 = "专心为您; $Length = "18" ; $Append = false; echo sysSubStr( $String , $Length , $Append ); ?> /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
注:关于php 中文字符串截取的四个函数的内容就先介绍到这里,更多相关文章的可以留意
代码注释