1. 程式人生 > 其它 >substr和mb_substr的區別

substr和mb_substr的區別

其實就是strlen(獲取單個字元編碼)和mb_strlen(獲取字元個數)的區別,要用同一個系列的

$str = "黃石的孩子";

mb_substr($str, 0, mb_strrpos($str, '孩子'))

或者

substr($str, 0, strrpos($str, '孩子'));

https://www.php.net/strlen/

https://www.php.net/manual/zh/function.mb-strlen.php

strlen和mb_strlen都是用於獲取字串長度的,但是兩者獲取字串的長度不同:

1、strlen只針對單位元組編碼字元,也就是說它計算的是字串的總位元組數,如果是多位元組碼編碼,如gbk和utf8,使用strlen得到的不是字元的個數,而是該字元的總位元組數;

2、mb_strlen獲取其字元個數,使用mb_strlen要注意兩點,一是要開啟mbstring擴充套件,二是要指定字符集。

eg:

//當前頁面是utf8編碼

$str = '中文89PHP';

echo strlen($str); //中文+數字+英文:6 + 2 + 3 = 11

echo mb_strlen($str, 'gbk'); //中文+數字+英文:3 + 2 + 3 = 8

echo mb_strlen($str, 'utf8'); //中文+數字+英文:2 + 2 + 3 = 7