目录
PHP strip_tags() 函数详解
strip_tags()
是 PHP 中的一个内置函数,用于从字符串中去除 HTML 和 PHP 标签。
函数作用
strip_tags()
的主要作用是:
过滤字符串中的 HTML 和 PHP 标记
防止 XSS(跨站脚本)攻击
在需要纯文本输出的场景中使用
基本语法
string strip_tags ( string $str [, string $allowable_tags ] )
$str
:输入的字符串$allowable_tags
:可选参数,指定允许保留的标签
示例说明
示例1:基本用法
$text = '<p>这是一个段落。</p><!-- 注释 --> <a href="#fragment">链接文本</a>';
$clean_text = strip_tags($text);
echo $clean_text;
输出:
这是一个段落。 链接文本
示例2:允许特定标签
$text = '<p>这是一个段落。</p> <b>加粗文本</b> <a href="#fragment">链接</a>';
$clean_text = strip_tags($text, '<p><a>');
echo $clean_text;
输出:
<p>这是一个段落。</p> 加粗文本 <a href="#fragment">链接</a>
注意:<b>
标签被去除了,但<p>
和<a>
标签保留了下来。
示例3:处理用户输入(安全防护)
// 假设这是用户提交的内容
$user_input = '<script>alert("XSS攻击!");</script> <p>正常内容</p>';
$safe_input = strip_tags($user_input);
echo $safe_input;
输出:
正常内容
示例4:保留标签属性
$text = '<p style="color:red;">红色文字</p> <img src="image.jpg" alt="图片">';
$clean_text = strip_tags($text, '<p><img>');
echo $clean_text;
输出:
<p style="color:red;">红色文字</p> <img src="image.jpg" alt="图片">
注意:保留的标签其属性也会被保留。
示例5:处理多行HTML
$html = <<<HTML
<!DOCTYPE html>
<html>
<head>
<title>示例页面</title>
</head>
<body>
<h1>标题</h1>
<p>正文内容</p>
<ul>
<li>项目1</li>
<li>项目2</li>
</ul>
</body>
</html>
HTML;
$plain_text = strip_tags($html);
echo $plain_text;
输出:
示例页面 标题 正文内容 项目1 项目2
注意事项
这个函数不会验证 HTML 的合法性,只是简单地去除标签
自 PHP 5.3.4 起,自闭合的 XHTML 标签会被忽略
对于复杂的 HTML 处理,可能需要结合其他函数或使用专门的 HTML 解析器
该函数不会去除 HTML 实体(如
&
、<
等)
替代方案
对于更复杂的 HTML 处理,可以考虑:
htmlspecialchars()
- 将特殊字符转换为 HTML 实体DOMDocument 类 - 提供更强大的 HTML 解析和操作能力
专门的 HTML 净化库如 HTML Purifier
strip_tags()
是一个简单快速的解决方案,适合大多数基本的标签去除需求。