如何在 HTML 字符串中安全截取指定长度(避开标签内部)的文本

落强吖_5066

落强吖_5066

2026-03-28

1057人浏览

原创

如何在 HTML 字符串中安全截取指定长度(避开标签内部)的文本

本文介绍一种利用浏览器原生 html 解析器实现安全截断 html 字符串的方法:在指定字符数(如 160)处截取,确保截断位置位于 html 标签之外,避免破坏 dom 结构或残留未闭合标签。

本文介绍一种利用浏览器原生 html 解析器实现安全截断 html 字符串的方法:在指定字符数(如 160)处截取,确保截断位置位于 html 标签之外,避免破坏 dom 结构或残留未闭合标签。

在处理富文本内容(如含 、
等内联标签的用户评论或日志)时,常需按字数限制(例如 160 字符)进行截断展示。但直接对原始 HTML 字符串使用 substring(0, 160) 极易导致截断点落在标签中间(如 未闭合,或
被从中劈开),进而引发渲染异常、XSS 风险或 DOM 解析错误。

与其手动解析标签边界(如正则匹配 ]+> 或逐字符扫描 ),更可靠的方式是交由浏览器的 HTML 解析器完成校验与修复——这是被广泛验证的最佳实践(参考 Stack Overflow 经典警示)。

以下是一个简洁、健壮的解决方案:

html-to-pptx-converter
html-to-pptx-converter

使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。

下载
function truncateHtmlOutsideTags(htmlString, maxLength = 160) {
  const tempDiv = document.createElement('div');

  // 步骤1:先截取前 maxLength 个字符并赋给 innerHTML
  tempDiv.innerHTML = htmlString.substring(0, maxLength);

  // 步骤2:检查解析后的内容长度是否超出限制
  // 若超出,说明浏览器自动补全了未闭合标签(如添加了 ),导致实际 HTML 变长
  // 此时需移除最后一个子节点(通常是被补全的冗余标签),再重新获取 innerHTML
  if (tempDiv.innerHTML.length > maxLength) {
    tempDiv.removeChild(tempDiv.lastChild);
  }

  return tempDiv.innerHTML;
}

✅ 使用示例:

const rawHtml = `  <span class="badge bg-teal black bg-lighten-4">2023-03-29 15:37:34 (Admin): </span>
he like to visit today call back him 5.30pm for confirmation. <br><span class="badge bg-teal black bg-lighten-4">2023-03-29 15:37:34 (An): </span>
he will come for visit.  <br>`;

console.log(truncateHtmlOutsideTags(rawHtml, 160));
// 输出:安全截断后的 HTML 片段,末尾必为完整标签或纯文本,无半截标签

console.log(truncateHtmlOutsideTags(rawHtml, 155));
// 输出:进一步缩短后仍保持结构合法的结果

⚠️ 注意事项:

  • 该方法不修改原始字符串语义,仅确保 HTML 结构完整性;所有文本内容(包括标签内的日期、人名等)均保留原样;
  • 不依赖 jQuery,纯原生 JavaScript,兼容现代浏览器及 IE11+;
  • 对自闭合标签(如
    、)和普通标签(、
    )均能正确处理;
  • 若截断后内容为空(如 maxLength 过小且首字符即在
  • 如需获取「纯文本」长度(忽略所有 HTML 标签),应先用 textContent 提取再计数,而非本函数目标。
  • ? 总结:
    绕过手工解析 HTML 的陷阱,转而信任浏览器内置解析器,是处理此类问题最稳健的策略。truncateHtmlOutsideTags 函数以极简逻辑实现了高可靠性——它不是“计算位置”,而是“生成合法片段”,真正做到了语义安全与工程实用的统一。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

html

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

6355

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

3552

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

3230

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

3259

5

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2023.08.11

4959

6

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

2023.08.11

3201

3

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

3009

3

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

2023.09.01

2648

6

HTML嵌入CSS样式的方法
HTML嵌入CSS样式的方法

HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.20

2728

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 224人学习