ThinkPHP的截取字符串函数无法显示省略号的解决方法

前端技术 2023/09/03 PHP

对于ThinkPHP的截取字符串函数无法显示省略号的情况,解决方法如下:
打开Common/extend.php页面,修改msubstr函数如下:

function msubstr($str, $start=0, $length, $charset=\"utf-8\", $suffix=true)
{
  if(function_exists(\"mb_substr\")) {
   if($suffix)
  {
     if($str==mb_substr($str, $start, $length, $charset)) 
     {
      return mb_substr($str, $start, $length, $charset); 
     }
     else
     {
      return mb_substr($str, $start, $length, $charset).\"...\"; 
     } 
 }
    else 
 {
   return mb_substr($str, $start, $length, $charset);
  }
  }
  elseif(function_exists(\'iconv_substr\')) {
   if($suffix)
  {
     if($str==iconv_substr($str,$start,$length,$charset)) 
     {
      return iconv_substr($str,$start,$length,$charset); 
     }
     else
     {
      return iconv_substr($str,$start,$length,$charset).\"...\"; 
     } 
   }
    else 
 {
   return iconv_substr($str,$start,$length,$charset);
  }
  }
  $re[\'utf-8\']  = \"/[\\x01-\\x7f]|[\\xc2-\\xdf][\\x80-\\xbf]|[\\xe0-\\xef][\\x80-\\xbf]{2}|[\\xf0-\\xff][\\x80-\\xbf]{3}/\";
  $re[\'gb2312\'] = \"/[\\x01-\\x7f]|[\\xb0-\\xf7][\\xa0-\\xfe]/\";
  $re[\'gbk\']  = \"/[\\x01-\\x7f]|[\\x81-\\xfe][\\x40-\\xfe]/\";
  $re[\'big5\']  = \"/[\\x01-\\x7f]|[\\x81-\\xfe]([\\x40-\\x7e]|\\xa1-\\xfe])/\";
  preg_match_all($re[$charset], $str, $match);
  $slice = join(\"\",array_slice($match[0], $start, $length));
  if($suffix) return $slice.\"…\";
  return $slice;
}

本文地址:https://www.stayed.cn/item/6676

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。