HTML 标签去除器
免费在线 HTML 标签移除工具。快速去除 HTML 标签,得到干净的纯文本。可选择性保留指定标签(br、p、b、i、a)。所有处理均在浏览器本地完成。
HTML 转纯文本:是「规格化」,不是「删标签」
很多教程把"去 HTML 标签"讲成"用正则把 < 和 > 之间的内容删掉"就完事,但严格意义上的 HTML 转纯文本是一套规格化(normalization)流程:它至少要完成四件事——解码字符实体、折叠连续空白、按块级元素补换行、丢弃脚本与样式。只删标签而忽略实体和空白,得到的并不是"干净文本",而是带着 、& 残留和诡异缩进的半成品。本工具走的是轻量正则路线(直接在浏览器本地运行,不上传数据),适合快速清理;但你要知道它的边界在哪,才能判断结果是否可信。
从口径上看,HTML 是国际标准(W3C / WHATWG 的 HTML Living Standard),实体表与空白规则都来自规范本身;而中文场景另有一个容易踩的坑:GB 18030-2022《信息技术 中文编码字符集》是我国强制性国家标准,要求中文文本以该字符集存储与交换。中文网页里常见的"全角空格"(U+3000)和 HTML 的 (U+00A0 不换行空格)并不是同一个字符——前者是中文排版空格,后者是西文不换行空格,二者在去标签后的纯文本里表现完全不同,切勿混为一谈。
表 1:HTML 实体解码规则对照表
符合规范的 HTML 解析会在读取阶段把字符实体还原成对应 Unicode 码位。WHATWG HTML Living Standard 的命名字符引用表共收录 2,231 个命名实体(HTML 4.01 时代仅有 252 个),外加十进制 &#nnn; 与十六进制 &#xNNN; 两种数字实体可表示任意 Unicode 码点。下表给出最常用的一组及其真实码位:
| 实体写法 | 解码字符 | Unicode 码位 | 类别 / 用途 |
|---|---|---|---|
& | & | U+0026 | 语法字符(必须转义) |
< | < | U+003C | 语法字符(标签起始) |
> | > | U+003E | 语法字符(标签结束) |
" | " | U+0022 | 属性引号 |
' | ' | U+0027 | 单引号(HTML5 新增) |
| 不换行空格 | U+00A0 | 排版空格(不折叠) |
— | — | U+2014 | 长破折号 |
© | © | U+00A9 | 版权符号 |
£ | £ | U+00A3 | 货币符号 |
¥ | ¥ | U+00A5 | 货币符号(日元 / 人民币旧写法) |
— | — | U+2014 | 数字实体(与 — 等价) |
注意:本工具是纯正则剥离器,不做实体解码。也就是说 在结果里仍写作字面文本 ,而不会变成空格;需要真正解码时,应改用浏览器 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() |
(U+00A0) | 不折叠 | 保留,或按需替换为普通空格 |
| 中文全角空格(U+3000) | 视为普通字符 | 按 GB 18030 语境保留或转换 |
注意:"折叠"只针对普通空白字符, 与全角空格(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: £10 & © 2026—end space</p>,本工具输出 55 个字符且实体原样保留:
Price: £10 & © 2026—end space
而符合规范的解析应解码为 Price: £10 & © 2026—end space。差异在于:实体解码属于 HTML 解析阶段,本工具没做这一步。需要干净结果时,请先在其他环境解码实体,或接受字面残留、手动替换。
常见问题
为什么去标签后 不变成空格?
因为本工具是纯正则剥离器,只删 <...> 标签,不执行 HTML 实体解码。 (U+00A0 不换行空格)在结果里仍是字面文本 。要真正变成空格,需用浏览器 DOM 或后端库先做实体解码,再剥离标签。
勾选保留 <p> 后,结果里为什么还有 <p> 字样?
保留逻辑是"整标签留存",即把匹配的 <p> 标签原样留在文本中,而不是替换成换行。它适合"想看标签还在"的调试场景;若你要的是段落换行,请配合后处理或结构保留工具。
把 <table> 转成纯文本为什么对不齐?
纯文本没有单元格宽度,遇到列宽不一、colspan/rowspan、嵌套表、空单元格时就会错位。纯文本剥离只解决"去标签",不对齐问题要靠定宽填充或改用 Markdown 预览 的管道表格。
HTML 去标签和转 Markdown 该选哪个?
目标决定工具:要"无格式纯文本"(字数统计、入库、喂模型)用本工具;要"保留标题 / 列表 / 链接 / 表格"的轻量格式用 Markdown 预览。详见上方对照表 6。
中文网页去标签后空格为何异常?
中文场景常见两种空格:HTML 的 (U+00A0 西文不换行空格)与中文"全角空格"(U+3000,GB 18030 编码字符集收录)。二者不是同一字符,空白折叠规则也不覆盖它们。按 GB 18030-2022 口径,中文排版空格应保留或显式转换为半角空格,避免混用导致统计偏差。
需要把清理后的文本进一步分析?可以配合 字数统计 统计字符数,或用 文本对比 比较去标签前后的差异;更多实战技巧见 HTML 标签去除器使用指南。