HTML 标签去除器

免费在线 HTML 标签移除工具。快速去除 HTML 标签,得到干净的纯文本。可选择性保留指定标签(br、p、b、i、a)。所有处理均在浏览器本地完成。

保留以下标签:

HTML 转纯文本:是「规格化」,不是「删标签」

很多教程把"去 HTML 标签"讲成"用正则把 < 和 > 之间的内容删掉"就完事,但严格意义上的 HTML 转纯文本是一套规格化(normalization)流程:它至少要完成四件事——解码字符实体、折叠连续空白、按块级元素补换行、丢弃脚本与样式。只删标签而忽略实体和空白,得到的并不是"干净文本",而是带着 &nbsp;、&amp; 残留和诡异缩进的半成品。本工具走的是轻量正则路线(直接在浏览器本地运行,不上传数据),适合快速清理;但你要知道它的边界在哪,才能判断结果是否可信。

从口径上看,HTML 是国际标准(W3C / WHATWG 的 HTML Living Standard),实体表与空白规则都来自规范本身;而中文场景另有一个容易踩的坑:GB 18030-2022《信息技术 中文编码字符集》是我国强制性国家标准,要求中文文本以该字符集存储与交换。中文网页里常见的"全角空格"(U+3000)和 HTML 的 &nbsp;(U+00A0 不换行空格)并不是同一个字符——前者是中文排版空格,后者是西文不换行空格,二者在去标签后的纯文本里表现完全不同,切勿混为一谈。

表 1:HTML 实体解码规则对照表

符合规范的 HTML 解析会在读取阶段把字符实体还原成对应 Unicode 码位。WHATWG HTML Living Standard 的命名字符引用表共收录 2,231 个命名实体(HTML 4.01 时代仅有 252 个),外加十进制 &#nnn; 与十六进制 &#xNNN; 两种数字实体可表示任意 Unicode 码点。下表给出最常用的一组及其真实码位:

实体写法解码字符Unicode 码位类别 / 用途
&amp;&U+0026语法字符(必须转义)
&lt;<U+003C语法字符(标签起始)
&gt;>U+003E语法字符(标签结束)
&quot;"U+0022属性引号
&apos;'U+0027单引号(HTML5 新增)
&nbsp;不换行空格U+00A0排版空格(不折叠)
&mdash;—U+2014长破折号
&copy;©U+00A9版权符号
&pound;£U+00A3货币符号
&yen;¥U+00A5货币符号(日元 / 人民币旧写法)
&#8212;—U+2014数字实体(与 &mdash; 等价)

注意:本工具是纯正则剥离器,不做实体解码。也就是说 &nbsp; 在结果里仍写作字面文本 &nbsp;,而不会变成空格;需要真正解码时,应改用浏览器 DOM 解析或后端库。这一点在算例 3 会直接看到。

表 2:块级元素换行规则对照表

纯文本没有"标签",但人有"段落"。规范渲染时,不同块级元素在文本化后应补的换行数并不相同。下表是做 HTML 转纯文本时最常被问到的换行规则:

元素是否产生换行换行位置说明
<p>是前后各 1 行段落,常作为分段基准
<div>是(渲染上)前后各 1 行块容器,文本化后建议补换行
<br>是仅其后 1 行硬换行,无配对结束标签
<li>是每项前 1 行列表项,通常加 "· " 或 "1. " 前缀
<tr>是每行后 1 行表格行,列对齐见下表 5
<h1>–<h6>是前后各 1 行标题,文本化后常加空行突出
<blockquote>是前后各 1 行引用块,可加前缀 ">" 标记
<hr>否(语义分隔)可用 "---" 代替水平线,纯文本无对应物

本工具默认不补这些换行——它只删标签,所以默认输出的段落会"挤"在一起;想保留段落感,就勾选保留 <p> 或 <br>(见算例 2)。

表 3:必须丢弃的元素与应保留文本的属性

元素 / 属性处理原因
<script>整段丢弃可执行代码,纯文本不需要也不该保留
<style>整段丢弃CSS 样式,与内容无关
<!-- 注释 -->整段丢弃作者注释,读者不可见
<noscript>整段丢弃无脚本时的兜底内容,文本化无意义
alt(图片)保留为文本替代文字,是不可见图片的唯一可读信息
title(元素)保留为文本悬停提示,可并入正文或括号注
<img> 本身丢弃标签图片无法以纯文本呈现,但 alt 应文本化

这正是"丢格式、留内容"的落点:<script>/<style>/注释被剔除,而 alt、title 这类承载语义的属性被还原成可读文字。

表 4:空白折叠规则(HTML 规范 white-space collapsing)

HTML 规范规定,在默认渲染下连续的空白字符(空格、制表符、换行)会被折叠为一个空格,元素边界处的空白也会被折叠,行首行尾的空白会被去掉。下表对照常见情形:

场景规范行为纯文本处理建议
连续空格 / 制表 / 换行合并为单个空格用正则 \s+ 替换为单空格
标签边界的空白折叠删标签后顺手清掉
行首 / 行尾空白去除对每行做 trim()
&nbsp;(U+00A0)不折叠保留,或按需替换为普通空格
中文全角空格(U+3000)视为普通字符按 GB 18030 语境保留或转换

注意:"折叠"只针对普通空白字符,&nbsp; 与全角空格(U+3000)都不在折叠之列——这也是为什么去标签后有时会出现"删不掉的多余空格"。

表 5:<table> 转纯文本的对齐难题

把表格变成纯文本,最难的不是"去掉标签",而是"对齐列"。纯文本没有单元格宽度,下列问题都会让结果难读:

难点表现处理建议
列对齐单元格内容长短不一,直接换行错位用定宽填充或 Markdown 表格
跨列 colspan某格占多列,行宽计算复杂合并显示并标注
跨行 rowspan内容纵向跨多行在每行重复或留空
嵌套表格表中有表先展平内层再处理外层
空单元格缺失内容导致错位补占位符(如 "-")

结论:若你的目标是"可读的表格",纯文本剥离并不是好选择,应当交给 Markdown 预览 这类保留结构的工具;只有当目标是"无格式的纯文本"时,本工具才合适。

表 6:与 Markdown 转换的差异对照表

维度纯文本剥离(本工具)Markdown 转换
结构全部丢弃保留标题 / 列表 / 引用
链接仅留锚文本保留 [文本](URL)
标题变成普通行加 # 前缀
列表变成普通行加 - / 1. 前缀
粗体 / 斜体丢失保留 ** / *
表格错位(见上表)保留管道表格

简言之:要"纯文本"用本工具,要"带轻量格式"用 Markdown 预览;二者不是替代关系,而是不同目标。

三个真实算例(基于页面默认输入)

下面三个例子都用本工具文本框里的默认 HTML 作为输入,确保与你打开页面看到的一致。输出已用脚本逐字符核验。

算例 1:全部标签去除(默认不勾选任何保留项)

默认输入共 186 个字符,包含 18 个标签。全部去除后得 88 个字符,结果如下:

Welcome to My Website
This is bold and italic text.

  Item 1
  Item 2

Learn more here.

可以看到:标题、段落、列表都"压"进了连续文本,<li> 前导空格还在(因为没有折叠),这正是"只删标签"的典型产物。

算例 2:保留 <p> 与 <br>

勾选保留 p 与 br 后,输出变为 102 个字符——<p> 标签被原样保留在文本里:

Welcome to My Website
<p>This is bold and italic text.</p>

  Item 1
  Item 2

<p>Learn more here.</p>

注意:本工具的正则"保留"是整标签留存,不是把 <p> 变成换行。所以你看到的是带尖括号的 <p> 字面文本,而非真正的空行。若你要的是"段落换行",更稳妥的做法是后处理或换用结构保留工具。

算例 3:实体不解码(关键陷阱)

输入 <p>Price: &pound;10 &amp; &copy; 2026&mdash;end&nbsp;space</p>,本工具输出 55 个字符且实体原样保留:

Price: &pound;10 &amp; &copy; 2026&mdash;end&nbsp;space

而符合规范的解析应解码为 Price: £10 & © 2026—end space。差异在于:实体解码属于 HTML 解析阶段,本工具没做这一步。需要干净结果时,请先在其他环境解码实体,或接受字面残留、手动替换。

常见问题

为什么去标签后 &nbsp; 不变成空格?

因为本工具是纯正则剥离器,只删 <...> 标签,不执行 HTML 实体解码。&nbsp;(U+00A0 不换行空格)在结果里仍是字面文本 &nbsp;。要真正变成空格,需用浏览器 DOM 或后端库先做实体解码,再剥离标签。

勾选保留 <p> 后,结果里为什么还有 <p> 字样?

保留逻辑是"整标签留存",即把匹配的 <p> 标签原样留在文本中,而不是替换成换行。它适合"想看标签还在"的调试场景;若你要的是段落换行,请配合后处理或结构保留工具。

把 <table> 转成纯文本为什么对不齐?

纯文本没有单元格宽度,遇到列宽不一、colspan/rowspan、嵌套表、空单元格时就会错位。纯文本剥离只解决"去标签",不对齐问题要靠定宽填充或改用 Markdown 预览 的管道表格。

HTML 去标签和转 Markdown 该选哪个?

目标决定工具:要"无格式纯文本"(字数统计、入库、喂模型)用本工具;要"保留标题 / 列表 / 链接 / 表格"的轻量格式用 Markdown 预览。详见上方对照表 6。

中文网页去标签后空格为何异常?

中文场景常见两种空格:HTML 的 &nbsp;(U+00A0 西文不换行空格)与中文"全角空格"(U+3000,GB 18030 编码字符集收录)。二者不是同一字符,空白折叠规则也不覆盖它们。按 GB 18030-2022 口径,中文排版空格应保留或显式转换为半角空格,避免混用导致统计偏差。

需要把清理后的文本进一步分析?可以配合 字数统计 统计字符数,或用 文本对比 比较去标签前后的差异;更多实战技巧见 HTML 标签去除器使用指南。