跳转到主内容
极星编程网:以代码为星,赴技术山海!

HTML 字符串安全截断:保留标签结构的纯文本长度控制方案

本文介绍一种不依赖 jquery 的原生 javascript 方法,用于在限定字符数(如 50 字符)内安全截断含 html 标签的字符串——仅统计可见文本长度,跳过标签内容,并优先在句号处截断以保证语义完整性。 本文介绍一种不依赖 jquery 的原生 javascript 方法,用于在限定字符数(如 50 字符)内安全截断含 html 标签的字符串——仅统计可见文本长度,跳过标签内容,并优先在句号处截断以保证语义完整性。 在 Web 开发中,常需对富文本摘要进行「视觉长度」截断(例如新闻列表、卡片预览),但直接按总字符数截断极易破坏 HTML 结构(如中途切断 标签),导致页面渲染异常或 XSS 风险;而先 stripTags() 再截断又会丢失所有格式,无法还原闭合标签。理想方案应满足三点: ✅ 仅将 非标签内的纯文本 计入长度限制; ✅ 截断点优先落在句号 . 后,确保语义完整; ✅ 自动补全被截断部分中残留的 未闭合标签 (如

→

),维持 DOM 结构有效性。 以下为生产就绪的解决方案,采用单次遍历 + 状态机设计,时间复杂度 O(n),无正则回溯风险: 使用示例: 关键设计说明: 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更 下载 立即学习 “ 前端免费学习笔记(深入) ”; 状态精准识别 :通过 inTag 布尔值区分标签内外,避免正则误匹配(如 > 出现在属性值中); 标签栈管理 :tagStack 记录未闭合的标签名,截断后按 LIFO 顺序自动补全

,
等,确保 HTML 片段可安全插入 DOM; 句号优先截断 :仅当句号前文本长度 ≤ maxLength 时才触发提交,避免“...message.”被截成“...mess.”; 零依赖 & 兼容性 :纯 ES6+ 实现,无需 jQuery 或 DOM 解析,支持 SSR 环境。 ⚠️ 注意事项: 本方案不处理自闭合标签(如 ),因其不影响结构完整性; 若原文含注释 或 CDATA,需扩展状态机逻辑; 对于极端嵌套(>100 层标签),建议增加 tagStack.length 安全上限; 如需支持 Unicode 组合字符(如带重音符号),应改用 Array.from(html) 替代 html.length 迭代。 该方法已在多个 CMS 摘要生成模块中稳定运行,兼顾性能、安全与语义合理性,是 HTML 安全截断的轻量级工业实践方案。

相关文章