自己寫的php中文截取函數(shù)mb_strlen和mb_substr
眾所周知,php 自帶的 strlen 與 substr 函數(shù)沒法處理中文字符,于是,我們會(huì)用 mb_ 系列函數(shù)替代。但是,沒有 mbstring 庫(kù)怎么辦?這就需要我們自己寫一個(gè)來(lái)替代了,廢話不多說(shuō),先上代碼:
if ( !function_exists('mb_strlen') ) {
function mb_strlen ($text, $encode) {
if ($encode=='UTF-8') {
return preg_match_all('%(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)%xs',$text,$out);
}else{
return strlen($text);
}
}
}
/* from Internet, author unknown */
if (!function_exists('mb_substr')) {
function mb_substr($str, $start, $len = '', $encoding="UTF-8"){
$limit = strlen($str);
for ($s = 0; $start > 0;--$start) {// found the real start
if ($s >= $limit)
break;
if ($str[$s] <= "\x7F")
++$s;
else {
++$s; // skip length
while ($str[$s] >= "\x80" && $str[$s] <= "\xBF")
++$s;
}
}
if ($len == '')
return substr($str, $s);
else
for ($e = $s; $len > 0; --$len) {//found the real end
if ($e >= $limit)
break;
if ($str[$e] <= "\x7F")
++$e;
else {
++$e;//skip length
while ($str[$e] >= "\x80" && $str[$e] <= "\xBF" && $e < $limit)
++$e;
}
}
return substr($str, $s, $e - $s);
}
}
- PHP字符串長(zhǎng)度計(jì)算 - strlen()函數(shù)使用介紹
- php中計(jì)算中文字符串長(zhǎng)度、截取中文字符串的函數(shù)代碼
- php自定義函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)中文字符串長(zhǎng)度的方法小結(jié)
- 最準(zhǔn)確的php截取字符串長(zhǎng)度函數(shù)
- 利用PHP函數(shù)計(jì)算中英文字符串長(zhǎng)度的方法
- PHP中preg_match函數(shù)正則匹配的字符串長(zhǎng)度問(wèn)題
- php strlen mb_strlen計(jì)算中英文混排字符串長(zhǎng)度
- 詳解PHP中strlen和mb_strlen函數(shù)的區(qū)別
- 淺析PHP中strlen和mb_strlen的區(qū)別
- PHP中strlen()和mb_strlen()的區(qū)別淺析
- php中strlen和mb_strlen用法實(shí)例分析
- php常用字符串長(zhǎng)度函數(shù)strlen()與mb_strlen()用法實(shí)例分析
相關(guān)文章
如何動(dòng)態(tài)查看及加載PHP擴(kuò)展
這篇文章主要介紹了如何動(dòng)態(tài)查看及加載PHP擴(kuò)展,幫助大家更好的理解和學(xué)習(xí)使用PHP,感興趣的朋友可以了解下2021-04-04Thinkphp 在api開發(fā)中異常返回依然是html的解決方式
今天小編就為大家整理了一篇Thinkphp 在api開發(fā)中異常返回依然是html的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10PHP利用curl發(fā)送HTTP請(qǐng)求的實(shí)例代碼
這篇文章主要介紹了PHP利用curl發(fā)送HTTP請(qǐng)求的實(shí)例,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07PHP實(shí)現(xiàn)正則匹配所有括號(hào)中的內(nèi)容
這篇文章主要介紹了PHP實(shí)現(xiàn)正則匹配所有括號(hào)中的內(nèi)容,需要的朋友可以參考下2018-06-06Yii2增刪改查之查詢 where參數(shù)詳細(xì)介紹
這篇文章主要介紹了Yii2增刪改查之查詢 where參數(shù)詳細(xì)介紹的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08Zend Framework框架的registry(注冊(cè)表)使用示例
這篇文章主要介紹了Zend Framework框架的registry(注冊(cè)表)使用示例,提供對(duì)象方式使用與set、get方法使用示例,需要的朋友可以參考下2014-03-03