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

相关推荐
REDcker7 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
REDcker9 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
汤愈韬12 小时前
三种常用 NAT 的经典案例
网络协议·网络安全·security
云云只是个程序马喽12 小时前
AI漫剧创作系统开发定制指南
人工智能·小程序·php
汤愈韬13 小时前
NAT Server 与目的Nat
网络·网络协议·网络安全·security
其实防守也摸鱼15 小时前
CTF密码学综合教学指南--第三章
开发语言·网络·python·安全·网络安全·密码学
其实防守也摸鱼15 小时前
CTF密码学综合教学指南--第四章
网络·笔记·安全·网络安全·密码学·ctf
Chockmans19 小时前
春秋云境CVE-2017-3506
安全·web安全·网络安全·系统安全·安全威胁分析·春秋云境·cve-2017-3506
niucloud-admin1 天前
PHP V6 单商户常见问题——云编译报错处理
php
xxjj998a1 天前
Laravel 1.x:PHP框架的原始魅力
android·php·laravel