You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在CodeIgniter的Grocery CRUD中实现长字符串截断后添加省略号

嘿,这个需求太常见了,我给你两种实用的解决方案,看哪种更适配你的技术栈:

方案一:数据库层面直接处理

如果不想在应用层写额外逻辑,直接让SQL返回处理好的结果是最高效的方式,尤其是数据量较大的时候:

-- 针对需要显示短描述的页面
SELECT 
  id,
  title,
  -- 判断字符长度,超过50就截断加省略号,否则返回原内容
  IF(CHAR_LENGTH(description) > 50, CONCAT(LEFT(description, 50), '...'), description) AS short_description
FROM your_table;

-- 针对需要完整显示的页面,直接查询原字段即可
SELECT id, title, description FROM your_table;

注意:这里用CHAR_LENGTH而不是LENGTH,因为LENGTH统计的是字节数,对于中文、日文这类多字节字符会出现判断不准的情况,CHAR_LENGTH是统计字符数,更准确。

方案二:应用层代码处理

如果想把数据查询和业务逻辑解耦,在应用层处理会更灵活,比如不同语言的实现示例:

PHP示例

// 封装一个截断函数,兼容多字节字符
function getShortDescription($desc, $limit = 50) {
    if (mb_strlen($desc) > $limit) {
        return mb_substr($desc, 0, $limit) . '...';
    }
    return $desc;
}

// 假设从数据库取出的数据存在$row数组中
$shortDesc = getShortDescription($row['description']);
// 完整显示直接使用$row['description']

Python示例

def get_short_description(desc, limit=50):
    if len(desc) > limit:
        return desc[:limit] + '...'
    return desc

# 假设从数据库取出的description值为desc_content
short_desc = get_short_description(desc_content)
# 完整显示直接用desc_content

提示:Python中默认的len()统计的是字符数(对于Unicode字符串),如果是处理特殊编码的内容,可以根据情况调整,但大部分场景下直接用就行。

不管选哪种方案,核心逻辑都是判断字符长度→超过限制则截断加省略号,否则返回原内容,你可以根据自己的项目架构来选~

内容的提问来源于stack exchange,提问作者ashokkumarn12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:38:32