Home  >  Article  >  Backend Development  >  Share some useful PHP functions for intercepting strings_PHP Tutorial

Share some useful PHP functions for intercepting strings_PHP Tutorial

WBOY
WBOYOriginal
2016-07-20 11:14:39857browse

分享几个好用的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>?>

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

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

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

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440270.htmlTechArticle分享几个好用的PHP 截取字符串函数(支持gb2312和utf-8)。 ? mysubstr( , , = "" = + ( = 0; ; ++ ( ( ( , , 1)) 0xa0 .= ( , , 2 ++ .= ( , , 1 ? ? utf8Substr( , , ('#^(?:...
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