zoukankan      html  css  js  c++  java
  • 中英文混截,一个中文相当于n个英文

    项目中遇到这么个需求,截取中英文字符串,一个中文相当于2个英文,全英文时截取12个英文字母,全中文时是6个中文汉字,中英文混合时是12个字节,在网上有找到这样的解决方案,但我没能静下心来研究懂,于是自己根据他的启发写了个方法,如下所示:

    网上找到的解决方案:http://waiting.iteye.com/blog/581888

    <?php
    
      /**
         * 中英文混截
         * @param type $str 需要截取的字符串
         * @param type $width 需要截取的长度
         * @param type $end 超过截取长度的部分代替字符串
         * @param type $equto 一个中文等价于几个字节
         * @return string 新字符串
         */
        public function str_substr($str, $width, $end = '...', $equto = 2) {
            $arr = [];
            //使用mb_strlen获取字符串长度,mb_substr截取字符串
            $len = mb_strlen($str);
            for($m = 0; $m<$len; $m++) {
                $arr[] = mb_substr($str, $m, 1);
            }
            $newStr = '';
            $newlen = 0;
            for($i=0; $i<count($arr); $i++) {
                if($newlen < $width) {
                    if(mb_strlen($arr[$i]) == strlen($arr[$i])) {
                        $newStr .= $arr[$i];
                        $newlen += 1;
                    }else {
                        $newStr .= $arr[$i];
                        $newlen += $equto*1;
                    }
                }
            }
            if($len > $width) {
                $newStr .= $end;
            }
            return $newStr;
        }
  • 相关阅读:
    sql中触发器的使用
    sql中优化查询
    sql中case when语句的使用
    CSRF学习小结
    javascript正则表达式笔记
    elementUI单选框获取值
    elementUI内置过渡(折叠)
    elementUI内置缩放过渡(缩放)
    elementUi内置过渡动画(淡入)
    创建koa2项目
  • 原文地址:https://www.cnblogs.com/totian/p/7844859.html
Copyright © 2011-2022 走看看