www.adminn.cn
站长正能量分享网!

自己写的php中文截取函数mb_strlen和mb_substr

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠
QQ站长交流群2:783203806 交流群1: 783203806 不定期拼团福利源码

这篇文章主要介绍了自己写的php中文截取函数mb_strlen和mb_substr,在服务器没mbstring库时可以使用本文函数代替,需要的朋友可以参考下

众所周知,php 自带的 strlen 与 substr 函数没法处理中文字符,于是,我们会用 mb_ 系列函数替代,但是,没有 mbstring 库怎么办?这就需要我们自己写一个来替代了,废话不多说,先上代码:

  1. if ( !function_exists('mb_strlen') ) { 
  2.  function mb_strlen ($text$encode) { 
  3.   if ($encode=='UTF-8') { 
  4.    return preg_match_all('%(?: 
  5.        [\x09\x0A\x0D\x20-\x7E]           # ASCII 
  6.      | [\xC2-\xDF][\x80-\xBF]            # non-overlong 2-byte 
  7.      |  \xE0[\xA0-\xBF][\x80-\xBF]       # excluding overlongs 
  8.      | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte 
  9.      |  \xED[\x80-\x9F][\x80-\xBF]       # excluding surrogates 
  10.      |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3 
  11.      | [\xF1-\xF3][\x80-\xBF]{3}         # planes 4-15 
  12.      |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16 
  13.      )%xs',$text,$out); 
  14.   }else
  15.    return strlen($text); 
  16.   } 
  17.  } 
  18. /* from Internet, author unknown */ 
  19. if (!function_exists('mb_substr')) { 
  20.     function mb_substr($str$start$len = ''$encoding="UTF-8"){ 
  21.         $limit = strlen($str); 
  22.  
  23.         for ($s = 0; $start > 0;–$start) {// found the real start 
  24.             if ($s >= $limit
  25.                 break
  26.  
  27.             if ($str[$s] <= "\x7F"
  28.                 ++$s
  29.             else { 
  30.                 ++$s// skip length 
  31.  
  32.                 while ($str[$s] >= "\x80" && $str[$s] <= "\xBF"
  33.                     ++$s
  34.             } 
  35.         } 
  36.  
  37.         if ($len == ''
  38.             return substr($str$s); 
  39.         else 
  40.             for ($e = $s$len > 0; —$len) {//found the real end 
  41.                 if ($e >= $limit
  42.                     break
  43.  
  44.                 if ($str[$e] <= "\x7F"
  45.                     ++$e
  46.                 else { 
  47.                     ++$e;//skip length 
  48.  
  49.                     while ($str[$e] >= "\x80" && $str[$e] <= "\xBF" && $e < $limit
  50.                         ++$e
  51.                 } 
  52.             } 
  53.  
  54.         return substr($str$s$e – $s); 
  55.     } 
  56. }

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《自己写的php中文截取函数mb_strlen和mb_substr》
文章链接:https://www.adminn.cn/news/32324.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

喜欢本模板用于2次开发,学习研究使用!

支付宝扫一扫打赏