MENU

PHP-对接飞蛾云商品列表空格补位,实现左中右排版对齐

January 31, 2023 • PHP

1675161448992.jpg
1675161449000.jpg

对接飞蛾云打印小票接口,我们发现打印出来的小票商品列表入上所示,会有错位,我们可以用下面代码实现:

    /**
     * 统计字符串字节数补空格,实现左中右排版对齐
     * @param string $str_left      左边字符串
     * @param string $str_centre    中间字符串
     * @param string $str_right     右边字符串
     * @param int    $length        输入当前纸张规格一行所支持的最大字母数量:58mm的机器,一行打印16个汉字,32个字母;76mm的机器,一行打印22个汉字,33个字母,80mm的机器,一行打印24个汉字,48个字母;标签机宽度50mm,一行32个字母,宽度40mm,一行26个字母
     * @return string              返回处理结果字符串
     */
    protected function LR($str_left, $str_centre, $str_right, $length)
    {
        if (empty($str_left) || empty($str_right) || empty($length)) return '请输入正确的参数';
        $left_space_k = '';
        $right_space_k = '';
        $str_left_lenght = strlen(iconv("UTF-8", "GBK//IGNORE", $str_left));
        $str_centre_lenght = strlen(iconv("UTF-8", "GBK//IGNORE", $str_centre));
        $str_right_lenght = strlen(iconv("UTF-8", "GBK//IGNORE", $str_right));
        $left_space = 20 - ($str_left_lenght + $str_centre_lenght); //左边+中间+空格总长度21,计算剩余空格长度
        $right_space = 14 - ($str_right_lenght + $str_centre_lenght); //左边+中间+空格总长度21,计算剩余空格长度
        $k = $length - ($str_left_lenght + $str_centre_lenght + $str_right_lenght); //纸张长度 - 左中右总和
        for ($left = 0; $left < $left_space; $left++) {
            $left_space_k .= ' ';
        }
        for ($right = 0; $right < $right_space; $right++) {
            $right_space_k .= ' ';
        }
        return $str_left . $left_space_k . $str_centre . $right_space_k . $str_right;
    }
$this->LR('商品名称','x1','10.00',58);

在小品商品列表处调用LR函数后,可实现下面的结果:
1675161140723.jpg