博客
关于我
php 返回html字符串长度限制,记一次js中和php中的字符串长度计算截取的终极问题和完美...
阅读量:800 次
发布时间:2023-02-28

本文共 1065 字,大约阅读时间需要 3 分钟。

在处理字符串长度计算时,特别是在处理多字节字符编码的语言(如UTF-8)时,常常需要根据实际显示宽度来决定字符串的长度。以下是针对不同语言的解决方案:

对于JavaScript,可以通过遍历每个字符的charCodeAt()方法来计算字节数,然后根据实际字符宽度进行调整。例如:

function getStringWidth(s) {    let length = 0;    for (let i = 0; i < s.length; i++) {        const code = s.charCodeAt(i);        if (code <= 255) {            length++;        } else {            length += 0.5;        }    }    return Math.ceil(length);}

对于PHP,则可以通过逐字符截断字符串来计算实际显示的宽度。例如:

function get_string_width($s) {    $length = 0;    while (strlen($s) > 0) {        $old_length = strlen($s);        $s = mb_substr($s, 0, -1, 'utf-8');        if (($old_length - strlen($s)) == 1) {            $length += 0.5;        } else {            $length += 1;        }    }    return ceil($length);}

基于上述方法,可以实现对字符串长度的精确计算。例如,截取字符串的函数可以如下实现:

function cut_string($s, $l = 140) {    $length = get_string_width($s);    if ($length > $l) {        while (get_string_width($s . '...') <= $l) {            $s = mb_substr($s, 0, -1, 'utf-8');        }        $s .= '...';    }    return $s;}

这些方法能够有效地处理不同编码下的字符串长度问题,确保计算结果符合实际显示的字符宽度。

转载地址:http://mztfk.baihongyu.com/

你可能感兴趣的文章
php 内存分析
查看>>
PHP 函数名前面加&
查看>>
redis报错
查看>>
php 删除包含某一字符的数组元素
查看>>
Redis学习总结(19)——Redis 5种集群方式对比
查看>>
php 反射
查看>>
php 处理 大并发
查看>>
php 大文件上传
查看>>
php 子进程监听消息,swoole学习笔记之多线程端口监听问题记录 多进程epoll模式...
查看>>
PHP 学习笔记 (四)
查看>>
Redis入门概述
查看>>
php 实现Iterator 接口
查看>>
PHP 实现N阶矩阵相乘
查看>>
php 实现进制转换(二进制、八进制、十六进制)互相转换
查看>>
PHP 实现页面跳转的三种方式及详细解析
查看>>
php 将XML对象转化为数组
查看>>
PHP 工具
查看>>
php 常用方法
查看>>
PHP 并发扣款,保证数据一致性(悲观锁和乐观锁)
查看>>
php 延迟静态绑定static关键字
查看>>