溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP中substr,mb_substr與mb_strcut的區(qū)別是什么

發(fā)布時(shí)間:2021-01-15 16:01:34 來(lái)源:億速云 閱讀:193 作者:Leah 欄目:開發(fā)技術(shù)

PHP中substr,mb_substr與mb_strcut的區(qū)別是什么?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

PHP substr()函數(shù)可以 分割文字,但要分割的文字如果包括中文字符往往會(huì)遇到問(wèn)題,這時(shí)可以用mb_substr()/mb_strcut這個(gè)函數(shù),mb_substr() /mb_strcut的用法與substr()相似,只是在mb_substr()/mb_strcut最后要加入多一個(gè)參數(shù),以設(shè)定字符串的編碼,但是 一般的服務(wù)器都沒(méi)打開php_mbstring.dll,需要在php.ini在把php_mbstring.dll打開。
舉個(gè)例子:

復(fù)制代碼 代碼如下:


<?php
echo mb_substr('這樣一來(lái)我的字符串就不會(huì)有亂碼^_^', 0, 7, 'utf-8');
?>


輸出:這樣一來(lái)我的字

復(fù)制代碼 代碼如下:


<?php
echo mb_strcut('這樣一來(lái)我的字符串就不會(huì)有亂碼^_^', 0, 7, 'utf-8');
?>


輸出:這樣一
從上面的例子可以看出,mb_substr是按字來(lái)切分字符,而mb_strcut是按字節(jié)來(lái)切分字符,但是都不會(huì)產(chǎn)生半個(gè)字符的現(xiàn)象……
mbstring 函數(shù)的說(shuō)明:
php的mbstring擴(kuò)展模塊提供了多字節(jié)字符的處理能力,平常最常用的就是用mbstring來(lái)切分多字節(jié)的中文字符,這樣可以避免出現(xiàn)半個(gè)字符的情況,由于是php的擴(kuò)展,它的性能也要比一些自定義的多字節(jié)切分函數(shù)要好上一些。
mbstring extension提供了幾個(gè)功能類似的函數(shù),mb_substr和mb_strcut,看看手冊(cè)上對(duì)它們的解釋。

復(fù)制代碼 代碼如下:


mb_substr
mb_substr() returns the portion of str specified by the start and length parameters.
mb_substr() performs multi-byte safe substr() operation based on number of characters. Position is counted from the beginning of str. First character's position is 0. Second character position is 1, and so on.
mb_strcut
mb_strcut() returns the portion of str specified by the start and length parameters.
mb_strcut() performs equivalent operation as mb_substr() with different method. If start position is multi-byte character's second byte or larger, it starts from first byte of multi-byte character.
It subtracts string from str that is shorter than length AND character that is not part of multi-byte string or not being middle of shift sequence.


再舉個(gè)例子,有一段文字, 分別用mb_substr和mb_strcut來(lái)做切分:
PLAIN TEXT
CODE:

復(fù)制代碼 代碼如下:


<?php
$str = '我是一串比較長(zhǎng)的中文-www.webjx.com';
echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');
echo "<br>";
echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
?>


輸出結(jié)果如下:
mb_substr:我是一串比較
mb_strcut:我是

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI