过滤内容中的HTML标签 strip_tags

本文介绍如何使用PHP的strip_tags函数去除HTML标签,包括基本用法、自定义参数应用以及替代方法以提高文章显示效果。通过比较直接截取内容与手动编辑简介的方法,探讨更优的文章展示策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

strip_tags 函数,过滤内容中的HTML标签

PHP手册中的示例

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> Other text';
echo strip_tags($text);
echo "\n";

// Allow <p>
echo strip_tags($text, '<p>');
?> 
结果
Test paragraph. Other text
<p>Test paragraph.</p> Other text

在网上看到一个方法,加多了判断
去除html标签
function strip_tags($string, $replace_with_space = true)
{
    if ($replace_with_space) {
            return preg_replace('!<[^>]*?>!', ' ', $string);
    } else {
        return strip_tags($string);
    } 
} 

在截取内容的时候,可以去掉HTML标签,以截取到对应长度的字串符。

或者在文章表中,加多一个简介的字段,手动编辑。这样显示的效果比直接截取好一些。

<think>我们正在讨论FastAdmin框架中的strip_tags过滤规则。根据引用[1]的内容,FastAdmin在前台默认开启了全局过滤,其中包括strip_tagshtmlspecialchars等函数,用于防止XSS攻击等安全问题。用户提到,有时候富文本内容的首行缩进丢失,就是因为这个全局过滤导致的。虽然可以修改Frontend.php文件移除trim过滤,但strip_tagshtmlspecialchars不建议移除,因为移除会导致跨站安全问题。现在,用户想了解strip_tags过滤规则在FastAdmin中的作用及实现方式。回答要点:1.解释strip_tags函数的作用:在PHP中,strip_tags函数用于从字符串中去除HTMLPHP标签。2.说明在FastAdmin中strip_tags过滤规则的应用场景:它被用于全局请求过滤,特别是在接收用户输入时,去除可能有害的HTMLPHP标签,防止XSS攻击。3.实现方式:FastAdmin在请求数据时,通过调用Request类的filter方法,使用内置的过滤函数(包括strip_tags)对数据进行过滤。具体到代码,当使用`$this->request->post('param/s')`或类似方法获取数据时,会根据指定的过滤规则进行处理。4.注意事项:虽然strip_tags可以去除标签,但它并不能防止所有的XSS攻击,因此FastAdmin还结合了htmlspecialchars等函数。同时,对于需要保留HTML内容的场景(如富文本编辑器),应该避免使用strip_tags,而使用其他安全过滤方式(如HTMLPurifier)。根据引用[3],FastAdmin还建议在服务器层面禁用一些危险函数,以增强安全性。下面组织回答。</think>### FastAdmin中`strip_tags`过滤规则的作用及实现方式 #### 一、核心作用 1. **XSS攻击防护** `strip_tags`的核心作用是**移除字符串中的HTML/PHP标签**,防止恶意脚本注入: ```php // 原始输入 $input = "<script>alert('XSS')</script>欢迎访问"; // 过滤后 $output = strip_tags($input); // => "欢迎访问" ``` 这是FastAdmin安全体系的基础防线[^1][^3]。 2. **富文本内容保护** 在保留基本格式的同时过滤危险标签: ```php // 允许保留安全标签(需配置) $safeText = strip_tags($text, '<p><strong><em>'); ``` #### 二、实现机制 1. **全局过滤配置** 在`application/common/controller/Frontend.php`中默认启用: ```php protected $filter = ['strip_tags', 'htmlspecialchars']; ``` 所有控制器继承此配置[^1]。 2. **请求数据过滤** 通过`Request`类自动应用: ```php // 获取POST参数时自动触发 $content = $this->request->post('content/s'); // 等效于:strip_tags(htmlspecialchars($_POST['content'])) ``` 3. **安全例外处理** 富文本编辑器等场景需**手动关闭过滤**: ```php // 在特定控制器中禁用过滤 protected $filter = ['htmlspecialchars']; // 移除strip_tags ``` 但需配合其他安全措施[^1]。 #### 三、注意事项 1. **副作用** - 会移除所有HTML标签(包括无害的`<p>`、`<div>`) - 导致富文本格式丢失(如首行缩进)[^1] 2. **替代方案** 富文本场景建议使用: ```php // 专用HTML净化器 use app\common\library\Security; $cleanHtml = Security::cleanHtml($rawHtml); ``` 3. **安全增强** 需结合服务器防护: ```ini ; php.ini配置(引用[3]) disable_functions = passthru,exec,system,shell_exec ``` #### 四、最佳实践 ```php // 安全接收富文本内容 public function saveContent() { // 1. 关闭自动过滤 $this->filter = ['htmlspecialchars']; // 2. 手动净化 $raw = $this->request->post('content'); $content = Security::cleanHtml($raw); // 自定义安全过滤 // 3. 数据库存储 Model::create(['content' => $content]); } ``` > **关键提醒**:直接移除`strip_tags`而不做替代防护将导致XSS漏洞[^1][^3],富文本处理必须使用专业HTML过滤器。 ### 相关问题 1. FastAdmin中如何安全处理富文本编辑器的内容提交? 2. 除了`strip_tags`,还有哪些防止XSS攻击的有效方法? 3. 如何配置FastAdmin的全局请求过滤规则以适应不同场景? 4. 在保留基本HTML格式的同时,如何实现安全的富文本存储? [^1]: 引用Frontend.php全局过滤机制说明 [^3]: 引用FastAdmin安全建议及服务器防护配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值