PHP strip_tags() 函数详解

目录

[PHP strip_tags() 函数详解](#PHP strip_tags() 函数详解)

函数作用

基本语法

示例说明

示例1:基本用法

示例2:允许特定标签

示例3:处理用户输入(安全防护)

示例4:保留标签属性

示例5:处理多行HTML

注意事项

替代方案


PHP strip_tags() 函数详解

strip_tags() 是 PHP 中的一个内置函数,用于从字符串中去除 HTML 和 PHP 标签。

函数作用

strip_tags() 的主要作用是:

  1. 过滤字符串中的 HTML 和 PHP 标记

  2. 防止 XSS(跨站脚本)攻击

  3. 在需要纯文本输出的场景中使用

基本语法

复制代码
string strip_tags ( string $str [, string $allowable_tags ] )
  • $str:输入的字符串

  • $allowable_tags:可选参数,指定允许保留的标签

示例说明

示例1:基本用法

php 复制代码
$text = '<p>这是一个段落。</p><!-- 注释 --> <a href="#fragment">链接文本</a>';
$clean_text = strip_tags($text);
echo $clean_text;

输出:

php 复制代码
这是一个段落。 链接文本

示例2:允许特定标签

php 复制代码
$text = '<p>这是一个段落。</p> <b>加粗文本</b> <a href="#fragment">链接</a>';
$clean_text = strip_tags($text, '<p><a>');
echo $clean_text;

输出:

php 复制代码
<p>这是一个段落。</p> 加粗文本 <a href="#fragment">链接</a>

注意:<b>标签被去除了,但<p><a>标签保留了下来。

示例3:处理用户输入(安全防护)

php 复制代码
// 假设这是用户提交的内容
$user_input = '<script>alert("XSS攻击!");</script> <p>正常内容</p>';
$safe_input = strip_tags($user_input);
echo $safe_input;

输出:

php 复制代码
正常内容

示例4:保留标签属性

php 复制代码
$text = '<p style="color:red;">红色文字</p> <img src="image.jpg" alt="图片">';
$clean_text = strip_tags($text, '<p><img>');
echo $clean_text;

输出:

php 复制代码
<p style="color:red;">红色文字</p> <img src="image.jpg" alt="图片">

注意:保留的标签其属性也会被保留。

示例5:处理多行HTML

php 复制代码
$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;

输出:

php 复制代码
示例页面 标题 正文内容 项目1 项目2

注意事项

  1. 这个函数不会验证 HTML 的合法性,只是简单地去除标签

  2. 自 PHP 5.3.4 起,自闭合的 XHTML 标签会被忽略

  3. 对于复杂的 HTML 处理,可能需要结合其他函数或使用专门的 HTML 解析器

  4. 该函数不会去除 HTML 实体(如 &amp;&lt; 等)

替代方案

对于更复杂的 HTML 处理,可以考虑:

  • htmlspecialchars() - 将特殊字符转换为 HTML 实体

  • DOMDocument 类 - 提供更强大的 HTML 解析和操作能力

  • 专门的 HTML 净化库如 HTML Purifier

strip_tags() 是一个简单快速的解决方案,适合大多数基本的标签去除需求。

相关推荐
鱼鱼说测试40 分钟前
Jenkins+Python自动化持续集成详细教程
开发语言·servlet·php
网硕互联的小客服5 小时前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
苏琢玉6 小时前
如何让同事自己查数据?写一个零依赖 PHP SQL 查询工具就够了
mysql·php
全栈软件开发11 小时前
PHP域名授权系统网站源码_授权管理工单系统_精美UI_附教程
开发语言·ui·php·php域名授权·授权系统网站源码
mit6.82411 小时前
ubuntu远程桌面很卡怎么解决?
linux·ubuntu·php
Bruce_Liuxiaowei14 小时前
跨站脚本攻击(XSS)高级绕过技术与防御方案
前端·网络安全·xss
人衣aoa1 天前
PG靶机 - Pelican
web安全·网络安全·渗透测试·内网渗透
lingggggaaaa1 天前
小迪安全v2023学习笔记(六十一讲)—— 持续更新中
笔记·学习·安全·web安全·网络安全·反序列化
奥格列的魔法拖鞋~1 天前
Docker-LNMP架构 创建多项目- 单个ngixn代理多个PHP容器服务
nginx·docker·eureka·架构·php·lnmp
运维行者_1 天前
使用Applications Manager进行 Apache Solr 监控
运维·网络·数据库·网络安全·云计算·apache·solr