最直接可靠的方式是使用PHP内置函数strip_tags(),它专为过滤HTML标签设计,安全高效,可保留指定标签,配合htmlspecialchars处理HTML实体,避免XSS风险;复杂需求应使用HTMLPurifier库。

过滤字符串中的HTML标签,最直接可靠的方式是使用PHP内置函数 strip_tags(),它专为此设计,安全高效,无需手动正则匹配,避免XSS风险和解析漏洞。
用 strip_tags() 快速清除全部HTML标签
这是最常用、最推荐的方法。它会移除所有HTML和PHP标签,只保留纯文本内容。
- 基础用法:strip_tags($str) —— 过滤所有标签
- 保留特定标签:strip_tags($str, ['p', 'br', 'strong']) —— 允许 <p>、<br>、<strong> 等标签保留
- 注意:不解析嵌套或不闭合标签,也不执行JS,天然防XSS
需要更精细控制?配合 htmlspecialchars 处理残留符号
strip_tags 不处理 HTML 实体(如 、
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 先 strip_tags 清标签,再 htmlspecialchars 转义剩余特殊字符:htmlspecialchars(strip_tags($str), ENT_QUOTES, 'UTF-8')
- 适用于用户输入展示场景,确保输出在HTML页面中安全渲染
- 避免反向操作(如先 htmlspecialchars 再 strip_tags),否则可能把
慎用正则表达式过滤HTML
虽然 preg_replace('/]*>/', '', $str) 看似简单,但存在明显缺陷:
立即学习“PHP免费学习笔记(深入)”;
- 无法识别注释 <!-- ... -->、CDATA段、自闭合标签变体(如 <br />)
- 易被绕过:如 <scr<script>ipt>alert(1)</scr<script>ipt>
- 不处理属性中的JS事件(onclick=...)、style里的expression等
- 仅适合极简、完全可信的内部数据清洗,生产环境不建议
复杂需求考虑 HTMLPurifier 库
当需保留部分样式、允许内联CSS、支持白名单级HTML结构(如富文本编辑器输出),应使用专业库:
- HTMLPurifier 是PHP中最成熟、安全的HTML过滤方案
- 可配置允许的标签、属性、URI协议、CSS规则,支持 XSS深度防护
- 安装:composer require ezyang/htmlpurifier,然后初始化后调用 purify()
- 性能略低于 strip_tags,但安全性与灵活性远超手动处理


















