php怎麼計算字串佔多少位元組

青灯夜游
發布: 2023-03-16 19:18:01
原創
8705 人瀏覽過

在php中,可以利用strlen()函數來計算字串的位元組數。此函數是按位元組來計算字串長度的,可以統計字串所佔的字元長度(位元組數),語法「strlen(字串)」。在這個函數的計算中,英文逗號、數字、英文字母、小數點等都只佔一個位元組;而一個GB2312編碼的漢字佔兩個位元組,一個UTF-8編碼的漢字佔三個位元組。

php怎麼計算字串佔多少位元組

本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦

php中不同的編碼格式下字元佔用的位元組是不同的:

  • ANSI編碼格式下一個中文字元佔2個位元組,一個英文字元佔1個位元組;

  • UTF-8編碼格式下一個中文字元佔3個字節,一個英文字元佔1個位元組。

而php中,可以利用strlen()函數來計算字串的位元組數。

strlen()函數是按位元組來計算字串長度的。

strlen($string)
登入後複製

此函數只接受一個參數$string(要計算的字串),如果該參數傳遞的值為空則傳回 0。

strlen()函數中,(英文狀態下)逗號、數字、英文字母、小數點.、底線、空格等都只佔一個字元長度(位元組).

<?php
header("Content-type:text/html;charset=utf-8");
$str = "hello world!";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>
登入後複製

php怎麼計算字串佔多少位元組

分析:上例的字串中,有10個英文字母,一個空格、一個英文感嘆號;合計:12個位元組。

strlen()函數中,一個 GB2312 編碼的漢字佔兩個字元長度(位元組),一個 UTF-8 編碼的漢字佔三個字元長度(位元組)。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "!";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>
登入後複製

php怎麼計算字串佔多少位元組

上例中,"!"是中文感嘆號,因此佔三個位元組。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "欢迎";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>
登入後複製

php怎麼計算字串佔多少位元組

上例中,包含兩個漢字,因此佔6個位元組。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "hello,欢迎来到这里!";
echo &#39;字符串 “&#39;.$str.&#39;” 占:&#39;.strlen($str).&#39; 个字节<br>&#39;;
?>
登入後複製

php怎麼計算字串佔多少位元組

上例中,包含5個英文字符,6個漢字,一個中文感嘆號和一個中文逗號;因此佔5 (8*3)=29個字節。

說明:在計算字串的字元數時,strlen()函數只能處理英文字串,對中文或中英混合字串不友善。此時,就需要利用

mb_strlen()函數了,該函數可以按字元來計算字串長度的。

擴充知識:mb_strlen() 函數

mb_strlen() 函數同樣可以傳回字串的長度,語法格式如下:

mb_strlen($str [, $encoding = mb_internal_encoding()])
登入後複製
  • #$str 為需要計算長度的字串

  • $encoding 是可選參數,為字元編碼,如果省略則使用內部字元編碼。

mb_strlen() 函數的傳回值為具有 $encoding 編碼的字串 $str 所包含的字元數,如果 $encoding 無效則傳回 false。

注意:與 strlen() 函數不同,在 mb_strlen() 函數中,無論是漢字,或是英文、數字、小數點、底線和空格,都只佔一個字元長度。

【範例】 使用 mb_strlen() 函數取得字串長度。

<?php
header("Content-type:text/html;charset=utf-8");
$str = "hello 你好!";
echo &#39;字符串 “&#39;.$str.&#39;” 的长度为:&#39;.mb_strlen($str,"utf-8").&#39;<br>&#39;;

$str = "欢迎来到PHP中文网!";
echo &#39;<br>字符串 “&#39;.$str.&#39;” 的长度为:&#39;.mb_strlen($str,&#39;utf-8&#39;).&#39;<br>&#39;;
?>
登入後複製

php怎麼計算字串佔多少位元組

可以看出,我們可以透過設定對應的$encoding參數,就能很好的處理中文字串的長度問題。

推薦學習:《PHP影片教學

以上是php怎麼計算字串佔多少位元組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板