strlen() 是在PHP之中,當你需要查詢一個字串的長度時很簡單好用的一個指令,而與這條指令相似的是mb_strlen(),這兩條指令對於字串長度的計算標準有一些不太一樣,它們分別計算的是「字元」與「字串」,這個差異主要出現在使用全形字體的時候會顯著的產生差異,例如在utf8的模式下中文字是3個字元,以下會詳細的示範相關的差異與使用方式,在按照實際需求衡量一下應該要使用哪一條指令囉!
strlen()
strlen($字串); //回傳值為 int
strlen() 統計的是這個字串的字元數,在標準半形字體上來說都是一個字母代表一個字元,但是如果這個時候輸入的字串包含全形字體(例如中文、或全形標點符號),那麼全形所輸出的部分通常就是3個字元。
mb_strlen()
mb_strlen($字串); //回傳值為 int
mb_strlen() 相較於 strlen() 的最大不同在於,這個指令回傳的是輸入字串的字數,確實就是依照一個一個字來計算,包含半形或全形都計一個字,所以當你要輸入一串完整的字串並且其中可能包含中文與英文時,你就必須要使用mb_strlen()來計算它的實際字數。
完整範例:
接下來我們實際來演練看看關於strlen與mb_strlen的幾個簡單範例,就可以更清楚得知它們的差異了!
$text_1 = "abc"; $text_2 = "中文"; $text_3 = "Hello World! 你好世界!"; $text_4 = " "; // 單純一個空格 echo strlen($text_1); // Ans: 3 echo strlen($text_2); // Ans: 6 echo strlen($text_3); // Ans: 28 echo strlen($text_4); // Ans: 1 echo mb_strlen($text_1); // Ans: 3 echo mb_strlen($text_2); // Ans: 2 echo mb_strlen($text_3); // Ans: 18 echo mb_strlen($text_4); // Ans: 1
由以上的範例我們就可以得知,在整個字串都是半形字元的情況下計算結果是一致的,但是如果出現中文或是全形的符號,就會展現出不同的差異了。
如果你計算長度是為了視覺上的效果那麼你應該要使用stelrn來判斷字元長度,因為這直接實際的反應了整串字串的真實寬度。
如果你計算長度是為了要判斷字數是否充足或過多,那麼你要用的就是mb_strlen來判斷字數,它便可以同時判斷全形與半形的字數,來達到判斷的效果。
☆ 如果空格或是標點符號是全形的,則計算的位元將會與一般的中文字一樣為全形的3個字元哦!
參考資料:
PHP.net strlen() (https://www.php.net/manual/en/function.strlen.php)
PHP.net mb_strlen() (https://www.php.net/manual/en/function.mb-strlen)
更多 PHP 相關文章 列表:https://richarlin.tw/blog/php/
Pingback: PHP - 文章列表 - RicharLin.Tw