首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php中的strip_tags没有帮助,需要一个更好的替代方案

strip_tags 是 PHP 中用于移除 HTML 和 PHP 标签的函数。然而,它并不完美,有时可能会漏掉一些标签,或者在处理特殊字符时出现问题。如果你发现 strip_tags 不能满足你的需求,可以考虑以下几种替代方案:

1. 使用正则表达式

虽然正则表达式可能不如专门的 HTML 解析器强大和稳定,但在某些情况下它仍然是一个快速且简单的解决方案。

代码语言:txt
复制
function stripAllTags($string) {
    return preg_replace('/<[^>]*>/', '', $string);
}

2. 使用 HTML Purifier

HTML Purifier 是一个专门用于清理和过滤 HTML 的 PHP 库。它可以更安全、更彻底地移除不需要的标签。

代码语言:txt
复制
require_once 'htmlpurifier/HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);

你可以在这里找到更多关于 HTML Purifier 的信息:HTML Purifier 官网

3. 使用 DOMDocument

PHP 的 DOMDocument 类可以解析 HTML 文档,并提供了移除节点的方法。

代码语言:txt
复制
function stripHtmlTags($str) {
    $dom = new DOMDocument();
    @$dom->loadHTML($str);
    return $dom->saveHTML();
}

4. 使用第三方库

还有一些第三方库可以帮助你处理 HTML,比如 symfony/dom-crawlergoutte/goutte

应用场景

  • 数据清洗:在处理用户输入的数据时,为了防止 XSS 攻击,需要移除或转义 HTML 标签。
  • 内容展示:在某些情况下,你可能只想显示纯文本内容,而不需要任何 HTML 标签。

可能遇到的问题及解决方法

  1. 标签未完全移除:使用更强大的解析器,如 HTML Purifier 或 DOMDocument。
  2. 特殊字符处理不当:确保在处理字符串之前对其进行正确的编码和解码。
  3. 性能问题:对于大量数据的处理,可以考虑使用缓存或优化代码逻辑。

选择哪种方法取决于你的具体需求和场景。如果你需要更高级的 HTML 处理功能,建议使用专门的库或工具。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP 之道笔记整理:最佳实践与安全指南

在这篇文章,我们将以简明易懂语言探讨 PHP 最佳实践一些关键主题,包括使用当前稳定版本、日期和时间处理、UTF-8 编码以及确保 Web 应用程序安全。...这篇文章旨在为刚入门开发者提供指南,同时也能够帮助有一定编程经验开发者回顾和巩固知识。使用 PHP 当前稳定版本(8.3)首先,与任何技术栈一样,使用当前稳定版本是非常重要。...值得注意是,PHP 5.6 将在 2018 年停止接收安全更新。强烈建议尽快升级到 PHP 8.3,以享受更好性能和安全性。接下来,让我们一起深入探讨更多关键主题。...日期和时间在 PHP 开发,经常需要处理日期和时间。PHP DateTime 类提供了一个面向对象接口,让日期和时间读取、写入、比较和计算变得更加简单。...PHP 层面的 UTF-8为了正确处理 UTF-8 字符串,我们应该使用 mb_* 函数替代传统字符串操作函数。例如,使用 mb_substr() 替代 substr() 来避免潜在乱码问题。<?

13110
  • php字符串过滤strip_tags()函数用法实例分析

    本文实例讲述了php字符串过滤strip_tags()函数用法。...分享给大家供大家参考,具体如下: strip_tags — 从字符串中去除 HTML 和 PHP 标记,非常重要函数 (PHP 4, PHP 5, PHP 7) string strip_tags (...allowable_tags:可选,指定不被去除字符列表。 作用:剥去字符串 HTML、XML 以及 PHP 标签。 返回值:返回被剥离字符串。 <?...相关内容感兴趣读者可查看本站专题:《php常用函数与技巧总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php+mysql数据库操作入门教程...》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助

    1.1K20

    PHP安全相关函数

    PHP 中有许多方便函数可以帮助你免于类似于 SQL注入,XSS攻击。现在让我们来看一下这些能够给你项目增加安全性函数吧。...但是它使用与php.ini 一项设置有关系 — magic_quotes_gpc 1....strip_tags(): 一般在输出时使用,将HTML、XML 以及 PHP 标签剥去。...函数原型:strip_tags(string,allow) String 代表输入字符串,allow 代表 不删除标签,你可以通过 allow 来自定义过需要滤掉标签 md5() : 一个将字符串转换为一个...但是,现在使用这个函数时,需要注意有一些数据库记录了大量md5 值,通过暴力枚举方式来破解你密码,所以在使用时候,你可以先将你原字符串加一层密,然后再使用md5()哈希,会获得更好效果。

    89920

    MAMP 服务器 preauth XSS 导致主机妥协 (0day)

    根据他们 wiki,MAMP 是一个解决方案堆栈,由免费、开源和专有的商业软件组成,共同用于在 Apple Macintosh 计算机上开发和运行动态网站。...正如您所看到,用户控制输入 ($_SERVER['PHP_SELF']) 被用在一个没有足够清理 (strip_tags) 标记。...MAMP 附带了许多攻击者可以使用功能,例如:通过 phpMyAdmin 进行完整数据库操作(不需要来自 localhost 身份验证,但需要我们 XSS 漏洞利用可以轻松为我们获取 antiCSRF...将 localhost 域及其文本负载嵌入到一个不可见 iframe 2. 将受害者发送给看似无辜攻击者页面 3. 我们 XSS 负载执行,我们可以利用我们其他漏洞不会在本帖透露。...htmlentities(strip_tags($_SERVER['PHP_SELF'])) 修改 index.php 第 30 行,你应该是安全

    68620

    php反射型xss,反射型XSS测试及修复

    反射型XSS一般出现位置,如GET参数 测试搜索功能 F12查看源码,查找出现1111位置 第一个位置在title处 尝试闭合掉title标签,然后测试JS代码,成功弹窗 查看源码,XSS执行...第二处位置在搜索框,此处XSS无法执行,因为位于value属性内,需要将其闭合 测试时注意闭合掉多余双引号” 接下来对XSS漏洞进行源码修复 第一处XSS在title位置,输入搜索参数ks直接...>|{ 添加过滤代码strip_tags()操作 测试发现对 第二处XSS位于搜索框,位于index_menu.html 同样漏洞,对输入ks没有进行任何过滤操作直接echo输出 添加过滤函数strip_tags...php echo strip_tags(input(‘ks’));?...> 测试发现对 然而这个修复是不完善,存在绕过,将value值闭合后,添加一个事件属性依然可以有效XSS 最好过滤方法是使用htmlsepcial函数进行过滤 <?

    75020

    TP如何获取输入变量

    在Web开发过程,我们经常需要获取系统变量或者用户提交数据,这些变量数据错综复杂,而且一不小心就容易引起安全隐患,但是如果利用好ThinkPHP提供变量获取功能,就可以轻松获取和驾驭变量了。...所以,更好方式是在框架中统一使用I函数进行变量获取和过滤。...参数(3.2.2新增) data 获取 其他类型参数,需要配合额外数据源参数(3.2.2新增) 注意:变量类型不区分大小写。...I方法时候 指定了过滤方法,那么就会忽略DEFAULT_FILTER设置,例如: // 等同于 strip_tags($_GET['name']) echo I('get.name','','strip_tags...变量修饰符 3.2.3版本开始,I函数支持对变量使用修饰符功能,可以更好过滤变量。

    2.1K30

    浅谈php:filter妙用

    巧用编码与解码 使用编码不光可以帮助我们获取文件,也可以帮我们去除一些“不必要麻烦”。 记得前段时间三个白帽有个比赛,其中有一部分代码大概类似于以下: <?php $content = '<?...众所周知,base64编码只包含64个可打印字符,而PHP在解码base64时,遇到不在其中字符时,将会跳过这些字符,仅将合法字符组成一个字符串进行解码。...这样,”phpexita”被正常解码,而后面我们传入webshellbase64内容也被正常解码。结果就是<?php exit; ? 没有了。 最后效果是 : ?...php exit; ? 实际上是什么? 实际上是一个XML标签,既然是XML标签,我们就可以利用strip_tags函数去除它,而php://filter刚好是支持这个方法。...php exit; ? 被去除了。但回到上面的题目,我们最终目的是写入一个webshell,而写入webshell也是php代码,如果使用strip_tags同样会被去除。

    1.3K42

    PHP 8.x 深入探讨PHP性能改进特性

    联合类型:联合类型是一个新特性,允许PHP开发人员定义一个变量来保存一组类型任何一个。 改进错误处理:PHP 8.2对错误处理进行了许多改进,包括更好错误消息和更优雅地处理错误能力。...因此,属性不仅提高了PHP代码质量,而且还促进了更高效和更精简开发过程,从而在Web服务器上实现了性能更好PHP应用程序。 考虑一个在Web应用程序验证用户输入简单用例。...不能两次使用同一个参数名。 如果没有为可选参数指定值,则将使用默认值。 如果为可选参数指定值,则默认值将被忽略。...删除扩展和功能 PHP 8.x及以后版本已经删除了几个扩展和函数,这些扩展和函数要么被弃用,要么有更好替代品。如果您代码依赖于这些删除,则这些删除可能会导致兼容性问题。...例如 ext/ereg扩展已经被删除,以支持更高效ext/pcre扩展。 准备好重构代码以进行代码优化,从而使用更新函数或替代方案

    33310

    新铸Wechat+友圈Bug修复

    原文参考《用FreshRSS 实现友圈rss订阅》 这里需要特别注意一下原作者提供PHP代码:域名后面需要加/p/,否则会报错:Login failed. 登录失败问题。...以下是调整后PHP代码,将 https://example.com 修改为自己域名即可! <?...$apiUrl = 'https://example.com/p/api/greader.<em>php</em>'; $loginUrl = $apiUrl ....无奈之下不得不重新优化原逻辑,调整之后效果很棒。迄今为止没有发现过一次报错情况,看来问题已经解决了!...一时兴起重写了朋友圈逻辑和样式,当然还没有集成到博客,因为原逻辑在优化之后没有问题了,所以暂时不打算折腾了,独立 Wechat 页看这里(左侧栏加了 Wechat 入口,全程实时更新)基站依然是 FreshRSS

    6910

    PHP与Web页面交互操作实例分析

    hobby元素是一个索引数组,数组元素是用户所选复选框对应value属性值 当用户未选中任何复选框时,$_POST数组中将不存在hobby元素 <!...,表单name属性命名可以采用多维数组形式,便于开发,其使用方式与PHP数组非常相似 例如,开发在线考试系统时,表单中有填空题、单选题、多选题、判断题等多种题型,这时可以将每种题型放到一个数组里面进行提交...例如,用户提交一段HTML代码时,为了将代码原样显示,需要将里面的特殊字符串转换为实体字符,防止被浏览器解析 若没有对这些特殊字符进行处理,会给网站安全带来风险。...nl2br(),echo nl2br(“123\n456”, false); strip_tags()可以去除字符串标记部分,通常用于读取一段HTML代码后,去除其中HTML标记,只保留文本...》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家PHP程序设计有所帮助

    3.6K20

    新手指南:DVWA-1.9全级别教程(完结篇,附实例)之XSS

    帮助web开发者更好理解web应用安全防范过程。...stripslashes(string) 函数删除字符串反斜杠。 可以看到,对输入并没有做XSS方面的过滤与检查,且存储在数据库,因此这里存在明显存储型XSS漏洞。...> 相关函数说明 strip_tags() 函数剥去字符串 HTML、XML 以及 PHP 标签,但允许使用标签。...最后附赠最近遇到一个实例:一次有趣XSS+CSRF组合拳 0×01 前言 最近执着于渗透各种xx人才网,前两天在某网站上发现了一个极其鸡肋XSS漏洞,本来以为没有太大利用价值,没想到结合CSRF...0×03 CSRF带来曙光 在修改个人资料过程,抓包发现这个修改接口并没有任何防CSRF机制,存在明显CSRF漏洞: ?

    7.2K51

    tpM,D,C,A,I,S方法

    D方法实例化模型类时候通常是实例化某个具体模型类,如果仅仅是对数据表进行基本CURD操作的话,可以使用M方法.由于不要加载具体模型类,所以性能会更好.如果D方法没有找到定义模型类,则会自动调用...->select(); 实例化其他模型类 第一种因为没有模型类定义,很难封装一些额外逻辑方法.如果只是需要扩展一些通用逻辑,可以尝试下面方法 $User = new CommonModel('User...我们经常要获取系统变量或者用户提交数据.这些数据处理不好就会引起安全隐患,所以tp给我们提供了一个变量获取功能....']; // 获取server变量 传统获取方法没有统一安全机制,后期调整比较麻烦,更好方式是在框架中统一使用I函数进行变量获取和过滤。...I方法时候 指定了过滤方法,那么就会忽略DEFAULT_FILTER设置,例如: // 等同于 strip_tags($_GET['name']) echo I('get.name','','strip_tags

    85810

    WordPress主题制作(四):制作头部模板header.php

    我们可以提取这部分相似的代码,放到一个单独文件header.php,各个页面想用这部分代码时候再用WordPressget_header()包含进去就可以达到所有页面头部内容一致,不再需要给每个页面都写一次这部分代码了...,我们后期维护起来也至需要修改header.php即可。...在我们之前创建主题目录wp-content\themes\Yii-Candy下新建一个文件header.php,我们提取出index.php头部代码复制粘贴到header.php即可,下面的是目前...那为什么header.php 没有加载呢?因为这是WordPress主题,是要被WordPress主程序调用,经过层层解析才能把你博客显示出来,而不是简简单单html静态网页文件。...>" /> 添加wp_head 有些插件需要在网页头部执行一些类如添加一些js或css动作,要让这些插件能够正常工作,也让你主题有更好兼容性,你应该添加wp_head()函数。

    1.2K20
    领券