zoukankan      html  css  js  c++  java
  • 中文截取字符串方法(指定长度之后的中文用逗号代替)

    <?php
    function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
    {
       if($code == 'UTF-8')
       {
           $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/";
           preg_match_all($pa, $string, $t_string);

           if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
           return join('', array_slice($t_string[0], $start, $sublen));
       }
       else
       {
           $start = $start*2;
           $sublen = $sublen*2;
           $strlen = strlen($string);
           $tmpstr = '';

           for($i=0; $i< $strlen; $i++)
           {
               if($i>=$start && $i< ($start+$sublen))
               {
                   if(ord(substr($string, $i, 1))>129)
                   {
                       $tmpstr.= substr($string, $i, 2);
                   }
                   else
                   {
                       $tmpstr.= substr($string, $i, 1);
                   }
               }
               if(ord(substr($string, $i, 1))>129) $i++;
           }
           if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
           return $tmpstr;
       }
    }

    $str = "自乔布斯去世之后,外界一致认为是因为他的一如既往的固执,而错过了最佳治疗时间";
    $aa= cut_str($str, 36, 0, 'gb2312');
    print_r($aa);
    ?>

  • 相关阅读:
    AXI协议(一)
    System Verilog基础(一)
    AHB协议
    验证的概述
    简易APB4 slave实践
    APB协议
    指令跳转与预测
    HDU4405--Aeroplane chess(概率dp)
    BZOJ1419——Red is good(期望dp)
    BZOJ1426----收集邮票(期望dp)
  • 原文地址:https://www.cnblogs.com/myphper/p/3227221.html
Copyright © 2011-2022 走看看