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

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

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

服務器之家 - 編程語言 - PHP教程 - php中計算中文字符串長度、截取中文字符串的函數代碼

php中計算中文字符串長度、截取中文字符串的函數代碼

2019-12-10 13:27PHP教程網 PHP教程

在做PHP開發的時候,由于我國的語言環境問題,所以我們常常需要對中文進行處理。

在PHP中,我們都知道有專門的mb_substr和mb_strlen函數,可以對中文進行截取和計算長度,但是,由于這些函數并非PHP的核心函數,所以,它們常常有可能沒有開啟。當然,如果是用的自己的服務器,則只要在php.ini中開啟即可。如果是用的虛擬主機,而服務器又沒有開啟這方面的函數的話,那就需要我們自己寫出點適合咱國情的函數來了。 
以下幾個函數用起來頗為順手的。不過要知道,得在utf-8環境下使用。 

復制代碼代碼如下:


header('Content-type:text/html;charset=utf-8'); 
/** 
* 可以統計中文字符串長度的函數 
* @param $str 要計算長度的字符串 
* @param $type 計算長度類型,0(默認)表示一個中文算一個字符,1表示一個中文算兩個字符 

*/ 
function abslength($str) 

if(empty($str)){ 
return 0; 

if(function_exists('mb_strlen')){ 
return mb_strlen($str,'utf-8'); 

else { 
preg_match_all("/./u", $str, $ar); 
return count($ar[0]); 


$str = '我們都是中國人啊,ye!'; 
$len = abslength($str); 
var_dump($len); //return 12 
$len = abslength($str,'1'); 
echo '<br />'.$len; //return 22 
/* 
utf-8編碼下截取中文字符串,參數可以參照substr函數 
@param $str 要進行截取的字符串 
@param $start 要進行截取的開始位置,負數為反向截取 
@param $end 要進行截取的長度 
*/ 
function utf8_substr($str,$start=0) { 
if(empty($str)){ 
return false; 

if (function_exists('mb_substr')){ 
if(func_num_args() >= 3) { 
$end = func_get_arg(2); 
return mb_substr($str,$start,$end,'utf-8'); 

else { 
mb_internal_encoding("UTF-8"); 
return mb_substr($str,$start); 


else { 
$null = ""; 
preg_match_all("/./u", $str, $ar); 
if(func_num_args() >= 3) { 
$end = func_get_arg(2); 
return join($null, array_slice($ar[0],$start,$end)); 

else { 
return join($null, array_slice($ar[0],$start)); 



$str2 = 'wo要截取zhongwen'; 
echo '<br />'; 
echo utf8_substr($str2,0,-4); //return wo要截取zhon 


支持gb2312,gbk,utf-8,big5 中文截取方法 

復制代碼代碼如下:


/* 
* 中文截取,支持gb2312,gbk,utf-8,big5 

* @param string $str 要截取的字串 
* @param int $start 截取起始位置 
* @param int $length 截取長度 
* @param string $charset utf-8|gb2312|gbk|big5 編碼 
* @param $suffix 是否加尾綴 
*/ 
public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) 

if(function_exists("mb_substr")) 

if(mb_strlen($str, $charset) <= $length) return $str; 
$slice = mb_substr($str, $start, $length, $charset); 

else 

$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; 
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; 
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; 
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; 
preg_match_all($re[$charset], $str, $match); 
if(count($match[0]) <= $length) return $str; 
$slice = join("",array_slice($match[0], $start, $length)); 

if($suffix) return $slice."…"; 
return $slice; 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: tube性睡觉hd | 日b视频免费| 久久se视频精品视频在线 | 青草网在线观看 | 高清一区高清二区视频 | 国产激情在线 | 特黄特a级特别特级特毛片 特黄a级三级三级野战 | 免费观看无人区完整版 | 成人伊人青草久久综合网破解版 | 草莓永久地域网名入2022 | 日本高清在线播放一区二区三区 | 色噜噜狠狠狠综合曰曰曰88av | 我和么公的秘密小说免费 | 精品国产自在现线久久 | 好大好硬快点好爽公 | 99国产热 | 亚洲天堂成人在线 | 国产日韩精品一区二区在线观看播放 | 日韩亚洲欧美理论片 | 我的奶头被客人吸的又肿又红 | 女医学护士一级毛片 | 亚洲国产天堂在线观看 | 亚洲AV人无码综合在线观看蜜桃 | 男人天堂网页 | 国内精品视频免费观看 | 午夜视频网站 | 国产午夜亚洲精品 | 亚洲视频1 | 日韩视频免费观看 | 色多多幸福宝 | 污污的动态图合集 | poronovideos极度变态 | 亚洲日韩精品欧美一区二区一 | 免费观看的毛片 | 久久国产乱子伦精品免费不卡 | 天干夜天天夜天干天ww | 韩剧消失的眼角膜免费完整版 | 欧美性受xxxx88喷潮 | 扒开大腿狠狠挺进视频 | 美女的让男生桶 | 成人aaaa|