在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
相关产品推荐
相关产品推荐

