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

在PHP開發中會常常用到字符串截取,有的時候字符串截取會出現亂碼的狀況,那麼怎麼解決這個問題呢,其實也很容易php

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

ASCII碼:一箇中文漢字佔兩個字節的空間。

UTF-8編碼:一箇中文(含繁體)等於三個字節。

Unicode編碼:一箇中文(含繁體)等於兩個字節。

下面咱們就經過幾個簡單的代碼示例爲你們詳細介紹關於PHP截取中英字符串且無亂碼的相關知識。

1、 substr() 截取字符串(是以字節爲單位進行截取的)
<?php

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

截取「PHP中文網」前5個字節,結果以下:

如圖顯示亂碼,也就是說當咱們使用substr函數進行中英文字符串截取時,會出現亂碼,爲何呢?由於substr函數截取字符串的單位是字節,在截取中文的時候會有不能完整截取的狀況出現,因此會出現亂碼的狀況。

2、關於mb_substr()截取字符串

<?php

echo mb_substr('php中文網', 0, 5);

mb_substr:獲取部分字符串。

截取「PHP中文網」前5個字符,結果以下:

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

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

3、 mb_strcut() 截取字符串

<?php

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

截取「PHP中文網」前7個字節,結果以下:

從圖中能夠看到,咱們要截取7個字節,可是隻顯示截取了「PHP中」這6個字節。因爲一個漢字等於三個字節,那麼這裏第7個字節就不會顯示了。
 綜上所述,若是你們遇到要截取中文字符串並沒有亂碼的需求時,能夠選擇後兩種方法(mb_substr()和mb_strcut())
相關文章
相關標籤/搜索