最直接可靠的方式是使用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']) —— 允许
、
、 等标签保留
Article To Html下载文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 注意:不解析嵌套或不闭合标签,也不执行JS,天然防XSS
需要更精细控制?配合 htmlspecialchars 处理残留符号
strip_tags 不处理 HTML 实体(如 、zuojiankuohaophpcn),若源字符串含已编码内容,可能显示异常。此时可组合使用:
- 先 strip_tags 清标签,再 htmlspecialchars 转义剩余特殊字符:htmlspecialchars(strip_tags($str), ENT_QUOTES, 'UTF-8')
- 适用于用户输入展示场景,确保输出在HTML页面中安全渲染
- 避免反向操作(如先 htmlspecialchars 再 strip_tags),否则可能把 < 当普通文本留下
慎用正则表达式过滤HTML
虽然 preg_replace('/]*>/', '', $str) 看似简单,但存在明显缺陷:
- 无法识别注释 、CDATA段、自闭合标签变体(如
) - 易被绕过:如
ipt>alert(1) <script>ipt></script> - 不处理属性中的JS事件(onclick=...)、style里的expression等
- 仅适合极简、完全可信的内部数据清洗,生产环境不建议
复杂需求考虑 HTMLPurifier 库
当需保留部分样式、允许内联CSS、支持白名单级HTML结构(如富文本编辑器输出),应使用专业库:
- HTMLPurifier 是PHP中最成熟、安全的HTML过滤方案
- 可配置允许的标签、属性、URI协议、CSS规则,支持 XSS深度防护
- 安装:composer require ezyang/htmlpurifier,然后初始化后调用 purify()
- 性能略低于 strip_tags,但安全性与灵活性远超手动处理
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










