substr和mb_substr的區別
阿新 • • 發佈:2021-07-24
其實就是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