本文目錄一覽:
php 幾個位元組 函數
有兩個函數可以取PHP字元串長度
———————————————————————-
strlen — 獲取字元串長度
int strlen ( string $string )
返回給定的字元串 string 的長度。參數 string 需要計算長度的字元串。
返回值 成功則返回字元串 string 的長度;如果 string 為空,則返回 0。
———————————————————————-
mb_strlen — 獲取字元串的長度 (PHP 4 = 4.0.6, PHP 5)
mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )
獲取一個 string 的長度。
參數 str 要檢查長度的字元串。
encoding 參數為字元編碼。如果省略,則使用內部字元編碼。
返回值
返回具有 encoding 編碼的字元串 str 包含的字元數。 多位元組的字元被計為 1。
如果給定的 encoding 無效則返回 FALSE。
特別要注意的是:
有關中文的問題。PHP內置的字元串長度函數strlen無法正確處理中文字元串,它得到的只是字元串所佔的位元組數。對於GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於UTF-8編碼的中文,就是3倍的差異了(在UTF-8編碼下,一個漢字佔3個位元組)。
採用mb_strlen函數可以較好地解決這個問題。mb_strlen的用法和strlen類似,只不過它有第二個可選參數用於指定字元編碼。例如得到UTF-8的字元串$str長度,可以用mb_strlen($str,’UTF-8′)。如果省略第二個參數,則會使用PHP的內部編碼。內部編碼可以通過mb_internal_encoding()函數得到。需要注意的是,mb_strlen並不是PHP核心函數,使用前需要確保在php.ini中載入了php_mbstring.dll,即確保「extension=php_mbstring.dll」這一行存在並且沒有被注釋掉,否則會出現未定義函數的問題。
php如何判斷一個字所佔的位元組數
GB 18030的雙位元組部分完全採用了GBK的內碼系統。在此基礎上,做了四位元組擴展,四個位元組的編碼空間依次是:0x81到0xFE,0x30到0x39,0x81到0xFE,0x30到0x39。總共1,587,600個碼位
就是說你不能僅僅判斷一個位元組,如果第二個位元組的值是在0x30到0x39範圍里時,他就是4位元組的漢字了
PHP如何獲取中文字元串長度 utf8
PHP對中文字元串的處理一直困擾於剛剛接觸PHP開發的新手程序員。下面簡要的剖析一下PHP對中文字元串長度的處理:
PHP自帶的函數如strlen()、mb_strlen()都是通過計算字元串所佔位元組數來統計字元串長度的,一個英文字元佔1位元組。例:
$enStr = 『Hello,China!』;
echo strlen($enStr); // 輸出:12
而中文則不然,做中文網站一般會選擇兩種編碼:gbk/gb2312或是utf-8。utf-8能兼容更多的字元,所以受到很多站長的喜愛。gbk與utf-8對中文的編碼不同,導致中文在gbk與utf-8編碼下所佔位元組也有差異。
gbk編碼下每個中文字元所佔位元組為2,例:
$zhStr = 『您好,中國!』;
echo strlen($zhStr); // 輸出:12
utf-8編碼下每個中文字元所佔位元組為3,例:
$zhStr = 『您好,中國!』;
echo strlen($zhStr); // 輸出:18
那麼如何計算這組中文字元串的長度呢?有人可能會說gbk下獲取中文字元串長度除以2,utf-8編碼下除以3不就行了嗎?但是您要考慮字元串並不老實,99%的情況會以中英混合的情況出現。
這是WordPress中的一段代碼,主要思想就是先用正則將字元串分解為個體單元,然後再計算單元的個數即字元串的長度,代碼如下(只能處理utf-8編碼下的字元串):
$zhStr = 『您好,中國!』;
$str = 『Hello,中國!』;
// 計算中文字元串長度
function utf8_strlen($string = null) {
// 將字元串分解為單元
preg_match_all(「/./us」, $string, $match);
// 返回單元個數
return count($match[0]);
}
echo utf8_strlen($zhStr); // 輸出:6
echo utf8_strlen($str); // 輸出:9
php 整型占幾個位元組
據官方資料:
整型數的字長和平台有關,儘管通常最大值是大約二十億(32 位有符號)。 PHP 不支持無符號整數。Integer值的字長可以用常量PHP_INT_SIZE來表示,自 PHP 4.4.0 和 PHP 5.0.5後,最大值可以用常量PHP_INT_MAX來表示。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/243357.html