使用strip_tags()函数可快速去除HTML标签,保留纯文本;需精细控制时可用preg_replace()配合正则表达式过滤特定标签;结合htmlspecialchars_decode()处理实体字符,适用于文本提取、XSS防护等场景。

在PHP开发中,经常需要从字符串中去除HTML标签,比如处理用户输入、提取纯文本内容或防止XSS攻击。PHP提供了多种方式来清除HTML标签,下面介绍几种实用且常用的方法。
使用 strip_tags() 函数(最简单直接)
strip_tags() 是PHP内置函数,专门用于去除字符串中的HTML和PHP标签,保留纯文本内容。
基本语法:
strip_tags($string, $allowed_tags);
参数说明:
立即学习“PHP免费学习笔记(深入)”;
- $string:要处理的原始字符串
- $allowed_tags:可选,指定允许保留的标签,如
、等
示例:
$html = "这是一段加粗的文字
"; echo strip_tags($html); // 输出:这是一段加粗的文字 echo strip_tags($html, ''); // 输出:
这是一段加粗的文字
(只保留 p 和 br 标签)
使用正则表达式 preg_replace()(更灵活控制)
如果需要更精细地控制去除哪些标签或处理特定格式,可以使用 preg_replace() 配合正则表达式。
例如,完全清除所有HTML标签:
$html = "内容:链接"; $text = preg_replace('/<[^>]+>/','',$html); echo $text; // 输出:内容:链接
你也可以定制正则,比如只去除script、style等危险标签:
$dangerous = '/<(script|style|iframe)[^>]*>.*?<\/\\1>/is'; $safe_html = preg_replace($dangerous, '', $html);
结合 htmlspecialchars_decode() 处理实体字符
有时去除标签后,还会遇到 HTML 实体(如 、zuojiankuohaophpcn),可用 htmlspecialchars_decode() 将其还原为普通字符。
示例:
$string = "Hello World"; $clean = strip_tags(htmlspecialchars_decode($string)); echo $clean; // 输出:Hello World( 转为空格)
实际应用场景建议
根据使用场景选择合适方法:
- 一般文本提取、展示摘要 → 使用 strip_tags()
- 需要过滤特定危险标签(如 script)→ 使用 preg_replace()
- 配合富文本输入处理 → 先用 strip_tags 限制允许标签,再结合其他过滤
- 防止XSS攻击 → 建议使用更完整的安全库,如 HTML Purifier
基本上就这些。strip_tags() 能满足大多数去标签需求,正则提供更高自由度,搭配字符解码函数可获得更干净的文本输出。不复杂但容易忽略细节,注意保留必要标签和安全过滤即可。











