在先前的文章《PHP怎麼將某長度的子字串換成*號》中,我們介紹了字串替換,將某長度的子字串換成*號的方法,這次我們繼續了解字串,介紹一下計算中文字串長度,或是中英文混合字串長度的方法。
如何計算中文字串長度?對於這個問題,我們可能第一個反應就是使用strlen()函數,但strlen()函數處理全英文字串還是不錯的,但當了中英文混合或純中文的字串中,就不行了。我們來看看下面的範例:
<?php header("Content-type:text/html;charset=utf-8"); //设置字符编码为utf-8 $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.strlen($str).'<br>'; ?>
輸出結果為:
可以看出,strlen()函數因為處理字元的規則不同,無法準確的回傳中英文混合或純中文字串的長度。那為什麼會回27呢?
那是因為我們採用的字元編碼為utf-8,在UTF-8 編碼下一個中文字元佔三個位元組。
strlen()函數在ASCII碼下,一個中文漢字佔兩個位元組的空間;在UTF-8編碼下,一個中文(含繁體)等於三個位元組;在Unicode編碼下,一個中文(含繁體)等於兩個位元組。
而上例中的字串「歡迎來到PHP中文網!
」中一個包含了8個中文字符,3個英文字符,則8 *3 3=27
個位元組,則字串長度為27。
但這樣的字串長度不是我們想要的,那樣如何處理中文字符,可以準確的計算出我們想要的中英文混合或純中文字串的長度呢?
PHP提供了一個函數來解決這個問題,那就是mb_strlen() 函數。
還是上個範例,這次使用mb_strlen() 函數來計算字串長度:
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.mb_strlen($str,'utf-8').'<br>'; ?>
輸出結果為:
$str中,中文英文感嘆號,一個有11個字符,輸出結果也為11。對了,找到對的人了~
mb_strlen() 函數中無論是漢字,還是英文、數字、小數點、底線和空格,都只佔一個位元組。下面我們來簡單了解一下mb_strlen() 函數。
mb_strlen($string,$encoding)函數可以透過設定字元編碼從而傳回對應的字元數;該函數接受一個必需參數$string(需要偵測的字串)和一個可省略的參數
$encoding(字元編碼),如果省略則使用內部字元編碼。
$encoding參數,就能很好的處理中文字串的長度問題。
PHP字串處理(玉女心經版)》,免費的~快來學習啊!
以上是PHP字串學習如何傳回漢字或混合字元的長度的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Dreamweaver Mac版
視覺化網頁開發工具

記事本++7.3.1
好用且免費的程式碼編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver CS6
視覺化網頁開發工具