PHP截取含中文的混合字符串长度的函数

简介:

截取含中文的混合字符串长度

    /**
     * 截取中文混合字符串指定长度
     * 
     * @param string $string
     * @param integer $length
     * @param string $etc 超过长度时的省略符
     * @param string $charset 字符编码 utf-8 或者 gbk
     * @return string
     */
    public function truncateCn($string, $length = 80, $etc = '...', $charset = 'utf-8')
    {
        if ($length == 0) {
            return '';
        }
           
        if (function_exists('mb_substr')) {
            $etc = mb_strlen($string, $charset) > $length ? $etc : '';
            return mb_substr($string, 0, $length, $charset) . $etc;
        }
           
        if ($charset == '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]/";
        }
        else {
            $pa = "/[\x01-\x7f]|[\xa1-\xff][\xa1-\xff]/";
        }
        preg_match_all($pa, $string, $t_string);
        if (count($t_string[0]) > $length) {
            return join('', array_slice($t_string[0], 0, $length)) . $etc;
        }
           
        return join('', array_slice($t_string[0], 0, $length));
    }


目录
相关文章
|
7月前
|
PHP C++ 索引
PHP 高效之道:字符串与数组处理的实用技巧
PHP 高效之道:字符串与数组处理的实用技巧
307 83
|
5月前
|
PHP 开发者
PHP计算过去一定时间段内日期范围函数
这个函数为开发者提供了一个快速而简单的方法来获取与当前日期相关的过去时间范围,代码简洁易懂,可复用性高。
170 15
|
7月前
|
存储 JSON PHP
PHP数组键值转换的隐秘陷阱:整数还是字符串?
PHP数组键值转换的隐秘陷阱:整数还是字符串?
251 58
|
7月前
|
PHP 开发者 索引
探究PHP中常见数组操作函数
在编码实践中,合理利用这些数组操作函数可以简化编程工作,提升代码的效率和可读性。为达到最佳实践,开发者应该通过阅读官方文档来深入理解每个函数的工作原理以及如何在不同的场景下运用它们。
303 8
|
7月前
|
安全 PHP 数据库
PHP中的陷阱:字符串与数字比较时,你真的安全吗?
PHP中的陷阱:字符串与数字比较时,你真的安全吗?
|
10月前
|
PHP 开发者
PHP数据验证方法:如何检查一个字符串是否是email格式。
以上就是关于PHP如何检查一个字符串是否是email格式的全部内容。希望你在代码书写旅途中,能找到你的北斗星——简洁、高效、可靠的代码验证方式。让我们共同见证PHP的强大和丰富多彩!
258 16
|
11月前
|
Oracle 关系型数据库 MySQL
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
本文分析了YashanDB中PHP通过ODBC查询数据时出现的数据截断问题,表现为超过256字节的数据被截断,以及isql工具无法显示超过300字节长度的数据。问题根源在于YashanDB的ODBC驱动仅支持单次查询,且PHP扩展库默认缓冲区限制。解决方案包括改用PHP ODBC扩展库而非PDO_ODBC,以及调整isql代码逻辑以支持循环取数或一次性读取完整数据。文章还提供了具体代码示例和规避方法,适用于23.2.4.14及更早版本。
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
|
Oracle 关系型数据库 MySQL
【YashanDB 知识库】php 查询超过 256 长度字符串,数据被截断的问题
php 查询超过 256 字节数据,显示被截断:yashandb 的 odbc 驱动接口 SQLGetData 现在只支持单次查询,不支持多次取数据的操作。 isql 显示不出来,isql 工具最大只查询 300 长度的数据,超过了该长度未正常显示。
|
关系型数据库 MySQL 数据库连接
PHP内置函数
PHP内置函数
214 5
|
PHP
在PHP中,字符串操作
在PHP中,字符串操作
146 3