大米CMS官网论坛,大米站长联盟,大米站长之家,大米开发者社区

 找回密码
 注册大米会员

QQ登录

只需一步,快速开始

查看: 140|回复: 0

[原创]Magento打印pdf中文混合固定宽度自动换行

[复制链接]

341

主题

589

帖子

4589

积分

超级版主

Rank: 8Rank: 8

积分
4589

授权用户

发表于 2018-11-20 11:11:29 | 显示全部楼层 |阅读模式
本帖最后由 追影 于 2018-11-20 17:41 编辑
  1. //中英文混合转英文宽度
  2.     function strWidthMix($str, $charset = 'utf-8') {
  3.         if ($charset == 'utf-8')
  4.             $str = mb_convert_encoding($str, "GBK", "UTF-8");
  5.         $num = strlen ( $str );
  6.         $str_num = 0;
  7.         for($i = 0; $i < $num; $i ++) {
  8.             if (ord ( substr ( $str, $i + 1, 1 ) ) > 127) {
  9.                 $str_num += 2;
  10.                 $i ++;
  11.             }else{
  12.                 $str_num += 1;
  13.             }
  14.         }
  15.         return $str_num;
  16.     }
  17. //切去固定的混合宽度
  18.     function strCutMix($str,$long=76,$charset = 'utf-8'){
  19.         $num = strlen($str);
  20.         $width = $this->strWidthMix($str);
  21.         if($width <= $long){return array(0=>$str);}
  22.         if ($charset == 'utf-8') {
  23.             $str = mb_convert_encoding($str, "GBK", "UTF-8");
  24.         }
  25.         $temp_long = 0;
  26.         $temp_str = '';
  27.         $ret = array();
  28.         for($i = 0; $i < $num; $i++) {
  29.             //繁体
  30.             if (ord ( substr ( $str, $i, 1 ) ) >= 224) {
  31.                 $temp_long += 2;
  32.                 $temp_str .= substr($str, $i, 3);
  33.                 if($temp_long>=$long && $temp_str != ''){
  34.                     $ret[] = $charset == 'utf-8'?mb_convert_encoding($temp_str, "UTF-8","GBK"):$temp_str;
  35.                     $temp_str='';
  36.                     $temp_long = 0;
  37.                 }
  38.                 $i += 2;
  39.             }else if (ord ( substr ( $str, $i, 1 ) ) >=127) {
  40.                 //简体
  41.                 $temp_long += 2;
  42.                 $temp_str .= substr($str, $i, 2);
  43.                 if($temp_long >= $long && $temp_str != ''){
  44.                     $ret[] = $charset == 'utf-8'?mb_convert_encoding($temp_str, "UTF-8","GBK"):$temp_str;
  45.                     $temp_str='';
  46.                     $temp_long = 0;
  47.                 }
  48.                 $i += 1;
  49.             }else{
  50.                 //英文
  51.                 $temp_long +=1;
  52.                 $temp_str .= substr($str, $i, 1);
  53.                 if($temp_long>=$long && $temp_str != ''){
  54.                     $ret[] = $charset == 'utf-8'?mb_convert_encoding($temp_str, "UTF-8","GBK"):$temp_str;
  55.                     $temp_str='';
  56.                     $temp_long = 0;
  57.                 }
  58.             }
  59.         }
  60.         if($temp_str !=''){$ret[] = $charset == 'utf-8'?mb_convert_encoding($temp_str, "UTF-8","GBK"):$temp_str;}
  61.         return $ret;
  62.     }
复制代码

将上面代码放置任意helper调用即可
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册大米会员

本版积分规则

QQ|小黑屋|大米CMS社区 ( 蜀ICP备11002200号-2广告联系:广告联系 

Powered by 大米CMS

© 2010-2020 大米CMS Inc.

快速回复 返回顶部 返回列表