几个好用的截取字符串的php函数分享

分享几个好用的PHP 截取字符串函数(支持gb2312和utf-8)。

1、截取GB2312字符用的函数

<?php 

/**

**截取中文字符串 

* edit by www.jbxue.com

**/

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; 

} 

?>

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

<?php 

/**

* 截取utf8字符串

* edit by www.jbxue.com

*/

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); 

} 

?>

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

<?php 

/* 

Utf-8、gb2312都支持的汉字截取函数 

cut_str(字符串, 截取长度, 开始长度, 编码); 

编码默认为 utf-8 

开始长度默认为 0 

* by www.jbxue.com

*/



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'); 

?>

4. BugFree 的字符截取函数

<?php 

/** 

* @package BugFree 

* 

* Return part of a string(Enhance the function substr()) 

* 

* @author Chunsheng Wang <[email protected]> 

* @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. 

* @by www.jbxue.com

*/ 

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 = "book.chinaz.com -- 站长书库、站长教程"; 

$Length = "18"; 

$Append = false; 

echo sysSubStr($String,$Length,$Append); 

?>

 

你可能感兴趣的:(截取字符串)