❶ php如何支持mb_strlen如何使用php
PHP字元串長度計算strlen()函數使用介紹
strlen()函數和mb_strlen()函數在PHP中,函數strlen()返回字元串的長度。功能原型如下:
復制代碼
代碼如下:
(同Internationalorganizations)國際組織
strlen(字元串
string_input);
參數string_input是要處理的字元串。
函數的作用是:返回字元串的位元組長度。一個英文字母,一個數字,各種符號都佔一個位元組,長度都是1。中午字元佔用兩個位元組,所以中午字元的長度是2。例如
復制代碼
代碼如下:
www.sunchis.com);
回聲
strlen(三知發展網」);
?www.sunchis.com);運行結果:15
「回聲
strlen(三知發展網」);運行結果:15
這里有個問題,一個漢字不佔2個位元組嗎?「三支開發網」,明明是五個漢字,運行結果怎麼會是15?
原因是:在計算strlen()時,一個UTF-8漢字將被視為長度為3。中英文混用的情況下,如何准確計算字元串的長度?這里要介紹另一個函數mb_strlen()。mb_strlen()函數與strlen()幾乎相同,除了一個指定字元集編碼的附加參數。功能原型是:
復制代碼
代碼如下:
(同Internationalorganizations)國際組織
mb_strlen(字元串
字元串輸入,
線
編碼);
PHP內置的字元串長度函數strlen無法正確處理中文字元串,它只得到字元串佔用的位元組數。對於GB2312的中文編碼,strlen得到的值是漢字數的兩倍,而對於UTF-8的中文編碼,則相差三倍(在UTF-8下,一個漢字佔用3個位元組)。
因此,下面的代碼可以准確地計算出中文字元串的長度:
復制代碼
代碼如下:
回聲
strlen($str)。"
//結果:22
回聲
mb_strlen($str,
//結果:12
$strlen
=
(strlen($str)mb_strlen($str,
回聲
$strlen
//結果:17
?UTF-8),如果省略第二個參數,將使用PHP的內部編碼。內部編碼可以通過mb_internal_encoding()函數獲得。需要注意的是,mb_strlen不是PHP核心函數。在使用之前,需要確保php.ini中載入了php_mbstring.dll,也就是確保「extension=php_mbstring.dll」這一行存在,並且沒有被注釋掉,否則會出現函數未定義的問題。
❷ php中如何限制字元長度以及如何去掉
用多位元組mb_strlen()統計字元串的字元長度。
在用mb_substr()截取指定長度的字元。
代碼中用名義上針對latin事實上針對byte位元組的strlen, substr是不能正確截取非拉丁文字的(比如阿拉伯文、中文)
❸ PHP字元串長度計算 - strlen()函數使用介紹
strlen()函數和mb_strlen()函數
在PHP中,函數strlen()返回字元串的長度。函數原型如下:
復制代碼
代碼如下:
int
strlen(string
string_input);
參數string_input為要處理的字元串。
strlen()函數返回字元串所佔的位元組長度,一個英文字母、數字、各種符號均佔一個位元組,它們的長度均為1。一個中午字元占兩個位元組,所以一個中午字元的長度是2。例如
復制代碼
代碼如下:
<?php
echo
strlen("www.sunchis.com");
echo
strlen("三知開發網");
?>
「echo
strlen("www.sunchis.com");」的運行結果:15
「echo
strlen("三知開發網");」的運行結果:15
這里有一個疑問,一個中文字元不是佔2個位元組嗎?「三知開發網」,明明是五個漢字,運行的結果怎麼會是15?
原因出在這里:strlen()計算時,對於一個UTF-8的中文字元,會把它當做長度為3來處理。當出現中英文混排的情況下,怎麼准確的計算字元串的長度呢?這里,得引入另外一個函數mb_strlen()。mb_strlen()函數的用法與strlen()幾乎一摸一樣,只是多了一個指定字元集編碼的參數。函數原型為:
復制代碼
代碼如下:
int
mb_strlen(string
string_input,
string
encode);
PHP內置的字元串長度函數strlen無法正確處理中文字元串,它得到的只是字元串所佔的位元組數。對於GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於UTF-8編碼的中文,就是3倍的差異了(在UTF-8編碼下,一個漢字佔3個位元組)。
因此,下面的代碼能准確計算出中文字元串的長度:
復制代碼
代碼如下:
<?php
$str
=
"三知sunchis開發網";
echo
strlen($str)."<br>";
//結果:22
echo
mb_strlen($str,"UTF8")."<br>";
//結果:12
$strlen
=
(strlen($str)+mb_strlen($str,"UTF8"))/2;
echo
$strlen;
//結果:17
?>
原理分析:
strlen()計算時,對待UTF-8的中文字元長度是3,所以「三知sunchis開發網」的長度為5×3+7×1=22
在mb_strlen計算時,選定內碼為UTF8,則會將一個中文字元當作長度1來計算,所以「三知sunchis開發網」長度為5×1+7×1=12
剩下的就是純數學問題了,在此就不啰嗦了……
注意:對於mb_strlen($str,'UTF-8'),如果省略第二個參數,則會使用PHP的內部編碼。內部編碼可以通過mb_internal_encoding()函數得到。需要注意的是,mb_strlen並不是PHP核心函數,使用前需要確保在php.ini中載入了php_mbstring.dll,即確保「extension=php_mbstring.dll」這一行存在並且沒有被注釋掉,否則會出現未定義函數的問題。
❹ PHP怎麼獲取字元串長度
PHP對中文字元串的處理一直困擾於剛剛接觸PHP開發的新手程序員。下面簡要的剖析一下PHP對中文字元串長度的處理:
(1)PHP自帶的函數如strlen()、mb_strlen()都是通過計算字元串所佔位元組數來統計字元串長度的,一個英文字元佔1位元組;
(2)中文則不然,做中文網站一般會選擇兩種編碼:gbk/gb2312或是utf-8。utf-8能兼容更多的字元,所以受到很多站長的喜愛。gbk與utf-8對中文的編碼不同,導致中文在gbk與utf-8編碼下所佔位元組也有差異。
❺ php哪個函數能取得字元串長度
對於PHP新手程序員來說,理解中文字元串長度的處理可能是個挑戰。PHP內置的strlen()和mb_strlen()函數通常基於位元組數來計算長度,對英文字元而言,一個字元佔1位元組。例如:
$e的味院京海留nStr = 'Hello,China!';
echo strlen($enStr); // 輸出:12
然而,中文字元的編碼情況不同。常見的中文編碼有gbk/gb2312和utf-8。utf-8編碼能容納更多字元,因此更受歡迎。gbk和utf-8編碼下,中文字元的位元組數不同:gbk每個中文字元佔2位元組,utf-8佔3位元組。如:
$zhStr = '您好,中國!';
echo strlen($zhStr); // gbk編碼:12
echo mb_strlen($zhStr, 'utf-8'); // utf-8編碼:18
單純除以字元佔用的位元組數來計算長度並不完全適用,因為實際的字元串常常包含中英文混合。一個常見的解決方案是在WordPress中,通過正則表達式將字元串分解為單個字元,然後計算字元個數來得到長度。以下是一個處理utf-8編碼字元串的示例:
$zhStr = '您好,中國!';
$str = 'Hello,態守含鄉席凱樣司濃中國!';
// 計算中文字元串長度
function utf8_strlen($string = '') {
preg_match_all("/./us", $string, $match);
return count($match[0]);
}
echo utf8_strlen($zhStr); // 輸出:6
echo utf8_strlen($str); // 輸出:15
因此,對於包含中英文混合的utf-8編碼字元串,使用正則分解並計算單元個數是更為准確的方法。對於其他編碼的處理,則需要根據實際情況調整計算方式。
❻ php字元串長度如何計算
說明
strlen ( string $string ) : int
返回給定的字元串 string 的長度。
參數
string
需要計算長度的字元串。
返回值
成功則返回字元串 string 的長度;如果 string 為空,則返回 0。
更新日誌
版本 說明
5.3.0 Prior versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.
範例
Example #1 strlen() 範例