PHP實現中文字符串截取無亂碼


在我們學習PHP知識的過程中,PHP截取字符串應該是一個非常常見的字符串基礎操作了,想必大家都比較熟悉這方面知識點。

但是有些新手朋友們可能遇到過,當截取中英文字符串時出現亂碼的情況,其實這個也是非常容易解決的。

首先我們要了解關於中英文占多少字節的問題。

ASCII碼:一個中文漢字占兩個字節的空間。 UTF-8編碼:一個中文(含繁體)等於三個字節。 Unicode編碼:一個中文(含繁體)等於兩個字節。 
下面我們就通過幾個簡單的代碼示例為大家詳細介紹關於PHP截取中英字符串且無亂碼的相關知識。

一、關於substr函數截取字符串

<?php

echo substr("PHP中文網", 0, 5);

substr:返回字符串的子串。

substr()中第一個參數表示要截取的字符串,第二個參數表示從0位置開始截取,第三個參數表示截取長度。

截取“PHP中文網”前5個字節,結果如下:

如圖顯示亂碼,也就是說當我們使用substr函數進行中英文字符串截取時,會出現亂碼。

二、關於mb_substr函數截取字符串

<?php

echo mb_substr("PHP中文網", 0, 5);

mb_substr:獲取部分字符串。

截取“PHP中文網”前5個字符,結果如下:

如圖截取了前五個字符,並且沒有出現亂碼。

注:mb_substr是根據字符數來執行截取字符串。

三、關於mb_strcut函數截取字符串

<?php

echo mb_strcut("PHP中文網", 0, 7);

截取“PHP中文網”前7個字節,結果如下:



從圖中可以看到,我們要截取7個字節,但是只顯示截取了“PHP中”這6個字節。由於一個漢字等於三個字節,那么這里第7個字節就不會顯示了。
 綜上所述,如果大家遇到要截取中文字符串並無亂碼的需求時,可以選擇后兩種方法(mb_substr()和mb_strcut())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM