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() 是一个简单快速的解决方案,适合大多数基本的标签去除需求。

相关推荐
qq_336313935 小时前
java基础-IO流(网络爬虫/工具包生成假数据)
java·爬虫·php
qingtian!7 小时前
vulnhub靶场DC-2靶机渗透
网络安全·靶机复现
该用户已不存在9 小时前
Symfony AI v0.2.0 正式发布:功能解读与实战指南
php·ai编程·symfony
网安CILLE9 小时前
PHP四大输出语句
linux·开发语言·python·web安全·网络安全·系统安全·php
小小代码狗12 小时前
VS中配置php的保姆级教程
vscode·php
Arwen30313 小时前
如何消除APP、软件的不安全下载提示?怎样快速申请代码签名证书?
网络·网络协议·tcp/ip·安全·php·ssl
m0_7381207215 小时前
应急响应——知攻善防蓝队溯源靶机Linux-2详细流程
linux·服务器·网络·安全·web安全·php
oMcLin15 小时前
如何在Ubuntu 22.04上通过调优Nginx和PHP‑FPM,提升高并发WordPress网站的负载均衡与缓存性能?
nginx·ubuntu·php
Whoami!15 小时前
❿⁄₈ ⟦ OSCP ⬖ 研记 ⟧ 密码攻击 ➱ 破解SSH私钥的密码短语
网络安全·信息安全·密码破解原理·john the ripper
全栈小515 小时前
【PHP】如何将ThinkPHP 5部署到windows服务器的IIS里,和PHP版本又是一个怎么样的关系,三分钟教程搞定部署
服务器·windows·php