php中計算中文字串長度 擷取中文字串

2021-08-22 19:34:11 字數 2086 閱讀 1894

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(function_exists('mb_strlen'))

else

}$str = '我們都是中國人啊,ye!';

$len = abslength($str);

var_dump($len); //return 12

$len = abslength($str,'1');

echo '

'.$len; //return 22

/*utf-8編碼下擷取中文字串,引數可以參照substr函式

@param $str 要進行擷取的字串

@param $start 要進行擷取的開始位置,負數為反向擷取

@param $end 要進行擷取的長度

*/function utf8_substr($str,$start=0)

if (function_exists('mb_substr'))

else

}else

else }}

$str2 = 'wo要擷取zhongwen';

echo '

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

else

|[\xf0-\xff][\x80-\xbf]/";

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

}

php中計算中文字串長度、擷取中文字串

PHP 中文字串擷取

本文提供兩種方法實現中文字串的擷取 1.使用系統提供的 mb substr 或iconv substr 函式 php.ini 配置檔案中的 mbstring 擴充套件要開啟才能使用 函式說明 string mb substr string str,int start int length null ...

php中如何擷取中文字串

眾所周知php原生函式substr是不支援擷取中文字串的。下面的 提供了多種擷取php中文字串的方法。1.擷取gb2312中文字串 php 擷取中文字串 function mysubstr str,start,len else tmpstr substr str,i,1 return tmpstr ...

php中如何擷取中文字串

眾所周知 php原生函式 substr 是不支援擷取中文字串的。下面的 提供了多種擷取 php中文字串的方法。1.擷取 gb2312 中文字串 擷取中文字串 function mysubstr str,start,len else tmpstr substr str,i,1 return tmpst...