一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php中截取中文字符串的代碼小結(jié)

php中截取中文字符串的代碼小結(jié)

2019-12-06 13:43PHP教程網(wǎng) PHP教程

眾所周知php原生函數(shù)substr是不支持截取中文字符串的。下面的代碼提供了多種截取php中文字符串的方法。

字符串截取是一個非常常見的編程任務,而往往帶中文的字符串截取會經(jīng)常用到。雖然不難,但是自己寫函數(shù)實現(xiàn)又耗費時間,這里介紹一個比較好用的字符串截取函數(shù),能夠勝任基本的需求了。 

1. 截取GB2312中文字符串 

復制代碼代碼如下:


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

?> 


2. 截取utf8編碼的多字節(jié)字符串 

復制代碼代碼如下:


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

?> 


3. UTF-8、GB2312都支持的漢字截取函數(shù) 

復制代碼代碼如下:


< ?php 
/* 
Utf-8、gb2312都支持的漢字截取函數(shù) 
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'); 
?> 


4. BugFree 的字符截取函數(shù) 

復制代碼代碼如下:


< ?php 
/** 
* @package BugFree 
* @version $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $ 


* 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. 
*/ 
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 = "17test.info 走在中國自動化測試的前沿"; 
$Length = "18"; 
$Append = false; 
echo sysSubStr($String,$Length,$Append); 
?> 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 性欧美黑人巨大喷潮xxoo | 成人福利视频网址 | 茄子视频懂你更多apl | 欧美国产日本精品一区二区三区 | 特级老女人淫片高清视频 | 国产情侣偷国语对白 | 午夜精品免费 | 国外欧美一区另类中文字幕 | 日本成日本片人免费 | 国色天香视频完整版 | 亚洲网视频 | 天美影视传媒mv直接看 | 91制片厂 果冻传媒 天美传媒 | 午夜性色一区二区三区不卡视频 | 性色AV一区二区三区V视界影院 | 日韩二三区 | 边摸边吃奶边做爽视频免费 | 免费又爽又黄禁片视频在线播放 | 欧美性色老妇人 | 亚洲国产欧美在线成人aaaa | 黄片毛片 | 猥琐对着美女飞机喷到脸上 | 四虎影院网址大全 | 波多野结衣在线中文 | chinesespank打屁股 | 久久三级视频 | 欧美在线观看一区二区三 | 女人用粗大自熨喷水在线视频 | 男生的j桶女人屁免费视频 男生操男生 | 欧美人禽杂交av片 | 秋霞理论最新三级理论最 | 亚洲 色 欧美 爱 视频 日韩 | 四虎影院在线免费观看视频 | 免费人成网址在线观看国内 | 色老板影视 | 欧美在线高清 | 爱情岛论坛亚洲一号路线 | 国产亚洲精品日韩香蕉网 | 久久成人a毛片免费观看网站 | 美女禁18| 亚洲国产精品久久无套麻豆 |