Home >Backend Development >PHP Tutorial >PHP 截取中文字符串方法

PHP 截取中文字符串方法

WBOY
WBOYOriginal
2016-06-20 13:04:26980browse

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

1. 截取GB2312中文字符串

< ?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编码的多字节字符串

< ?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都支持的汉字截取函数

< ?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 的字符截取函数

< ?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 />?>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn