Home > php教程 > php手册 > body text

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

WBOY
Release: 2016-06-13 11:30:21
Original
948 people have browsed it

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

<?<span php 
</span><span /*</span><span *
**截取中文字符串 
* edit by www.jbxue.com
*</span><span */</span>
<span function</span> mysubstr(<span $str</span>, <span $start</span>, <span $len</span><span ) { 
</span><span $tmpstr</span> = ""<span ; 
</span><span $strlen</span> = <span $start</span> + <span $len</span><span ; 
</span><span for</span>(<span $i</span> = 0; <span $i</span> < <span $strlen</span>; <span $i</span>++<span ) { 
</span><span if</span>(<span ord</span>(<span substr</span>(<span $str</span>, <span $i</span>, 1)) > 0xa0<span ) { 
</span><span $tmpstr</span> .= <span substr</span>(<span $str</span>, <span $i</span>, 2<span ); 
</span><span $i</span>++<span ; 
} </span><span else</span> 
<span $tmpstr</span> .= <span substr</span>(<span $str</span>, <span $i</span>, 1<span ); 
} 
</span><span return</span> <span $tmpstr</span><span ; 
} 
</span>?>
Copy after login

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

<?<span php 
</span><span /*</span><span  
Utf-8、gb2312都支持的汉字截取函数 
cut_str(字符串, 截取长度, 开始长度, 编码); 
编码默认为 utf-8 
开始长度默认为 0 
* by www.jbxue.com
</span><span */</span>

<span function</span> cut_str(<span $string</span>, <span $sublen</span>, <span $start</span> = 0, <span $code</span> = 'UTF-8'<span ) 
{ 
</span><span if</span>(<span $code</span> == 'UTF-8'<span ) 
{ 
</span><span $pa</span> = "/[\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]/"<span ; 
</span><span preg_match_all</span>(<span $pa</span>, <span $string</span>, <span $t_string</span><span );

</span><span if</span>(<span count</span>(<span $t_string</span>[0]) - <span $start</span> > <span $sublen</span>) <span return</span> <span join</span>('', <span array_slice</span>(<span $t_string</span>[0], <span $start</span>, <span $sublen</span>))."..."<span ; 
</span><span return</span> <span join</span>('', <span array_slice</span>(<span $t_string</span>[0], <span $start</span>, <span $sublen</span><span )); 
} 
</span><span else</span><span  
{ 
</span><span $start</span> = <span $start</span>*2<span ; 
</span><span $sublen</span> = <span $sublen</span>*2<span ; 
</span><span $strlen</span> = <span strlen</span>(<span $string</span><span ); 
</span><span $tmpstr</span> = ''<span ;

</span><span for</span>(<span $i</span>=0; <span $i</span>< <span $strlen</span>; <span $i</span>++<span ) 
{ 
</span><span if</span>(<span $i</span>>=<span $start</span> && <span $i</span>< (<span $start</span>+<span $sublen</span><span )) 
{ 
</span><span if</span>(<span ord</span>(<span substr</span>(<span $string</span>, <span $i</span>, 1))>129<span ) 
{ 
</span><span $tmpstr</span>.= <span substr</span>(<span $string</span>, <span $i</span>, 2<span ); 
} 
</span><span else</span><span  
{ 
</span><span $tmpstr</span>.= <span substr</span>(<span $string</span>, <span $i</span>, 1<span ); 
} 
} 
</span><span if</span>(<span ord</span>(<span substr</span>(<span $string</span>, <span $i</span>, 1))>129) <span $i</span>++<span ; 
} 
</span><span if</span>(<span strlen</span>(<span $tmpstr</span>)< <span $strlen</span> ) <span $tmpstr</span>.= "..."<span ; 
</span><span return</span> <span $tmpstr</span><span ; 
} 
}

</span><span $str</span> = "abcd需要截取的字符串"<span ; 
</span><span echo</span> cut_str(<span $str</span>, 8, 0, 'gb2312'<span ); 
</span>?>
Copy after login

<?<span php 
</span><span /*</span><span * 
* @package BugFree 
* 
* 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. 
* @by www.jbxue.com
</span><span */</span> 
<span function</span> sysSubStr(<span $String</span>,<span $Length</span>,<span $Append</span> = <span false</span><span ) 
{ 
</span><span if</span> (<span strlen</span>(<span $String</span>) < = <span $Length</span><span  ) 
{ 
</span><span return</span> <span $String</span><span ; 
} 
</span><span else</span><span  
{ 
</span><span $I</span> = 0<span ; 
</span><span while</span> (<span $I</span> < <span $Length</span><span ) 
{ 
</span><span $StringTMP</span> = <span substr</span>(<span $String</span>,<span $I</span>,1<span ); 
</span><span if</span> ( <span ord</span>(<span $StringTMP</span>) >=224<span  ) 
{ 
</span><span $StringTMP</span> = <span substr</span>(<span $String</span>,<span $I</span>,3<span ); 
</span><span $I</span> = <span $I</span> + 3<span ; 
} 
</span><span elseif</span>( <span ord</span>(<span $StringTMP</span>) >=192<span  ) 
{ 
</span><span $StringTMP</span> = <span substr</span>(<span $String</span>,<span $I</span>,2<span ); 
</span><span $I</span> = <span $I</span> + 2<span ; 
} 
</span><span else</span><span  
{ 
</span><span $I</span> = <span $I</span> + 1<span ; 
} 
</span><span $StringLast</span>[] = <span $StringTMP</span><span ; 
} 
</span><span $StringLast</span> = <span implode</span>("",<span $StringLast</span><span ); 
</span><span if</span>(<span $Append</span><span ) 
{ 
</span><span $StringLast</span> .= "..."<span ; 
} 
</span><span return</span> <span $StringLast</span><span ; 
} 
}

</span><span $String</span> = "book.chinaz.com -- 站长书库、站长教程"<span ; 
</span><span $Length</span> = "18"<span ; 
</span><span $Append</span> = <span false</span><span ; 
</span><span echo</span> sysSubStr(<span $String</span>,<span $Length</span>,<span $Append</span><span ); 
</span>?>
Copy after login

 

source:php.cn
Statement of this Website
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
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!