实体字符存在的根本原因
HTML用少数几个字符(比如<和&)作为语法符号,浏览器一旦在原始文本里看到<,就会认为一个标签开始了。实体字符让文档可以安全地把这些字符作为可见文本包含进来,而不是当作标记指令解析,这也是为什么"提取纯文本"要做对,就必须把它们还原成正常字符。
简单粗暴地删标签会在哪里出问题
真实世界里的HTML很少像教科书例子那样干净——未闭合的标签、被复制粘贴打断的标签、注释或脚本块中出现的并非真正标签的尖括号,这些都会让简单的查找替换方式失效。使用真正的HTML解析器,而不是模式匹配,才能正确处理这些边界情况。
常见问题
把链接里的标签删掉,链接地址会不会也丢失?
在大多数简单处理方式下会丢失。可见的链接文字会保留下来,但标签所携带的跳转地址(href)会随着标签一起消失,因为这部分信息本来就不属于可见文本的一部分。
去除HTML标签和出于安全目的的净化处理是一回事吗?
不是。去除标签的目标是为了展示或存储得到干净的纯文本,而净化处理的目标是防止恶意代码被执行,通常需要使用经过充分测试的专用库,而不是一段简单的删标签脚本。