PHP函数strip_tags的一个bug浅析

yipeiwu_com7年前PHP代码库

PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。

由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数据被删除。

比如下述代码:

复制代码 代码如下:

<div>string</div>string<string<b>hello</b><div>string</div>

通过 strip_tags($str, ‘<div>') 过滤,我们可能期望得到如下结果:

复制代码 代码如下:

<div>string</div>string<stringhello<div>string</div>

而实际操作结果是这样的:

复制代码 代码如下:

<div>string</div>string

这一切都是因为加红的那个左尖括号,查了 PHP 的文档,有一个警告提示:

由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数据被删除。

既然在执行过滤前无法验证代码正确性,遇到和标签相关的字符 “<” 或 “>” 后面的代码就全挂了!

相关文章

php whois查询API制作方法

这里我们从万网或新网的数据接口取得数据,透过php的简单文本处理再输出。 复制代码 代码如下: <php? $domain = $_GET['q']; preg_match("|...

百度工程师讲PHP函数的实现原理及性能分析(三)

常用php函数实现及介绍 count count是我们经常用到的一个函数,其功能是返回一个数组的长度。 count这个函数,其复杂度是多少呢? 一种常见的说法是count函数会遍历整个数...

php 不使用js实现页面跳转

在页面跳转的时候 一般使用都是js window.location.href 当然也可以使用复制代码 代码如下: <html> <head> <meta h...

PHP数组函数array_multisort()用法实例分析

本文实例分析了PHP数组函数array_multisort()用法。分享给大家供大家参考,具体如下: 有时候我们需要对二维数组的某个键的值进行排序,这里就是讨论这个问题。我们可以使用ar...

php中静态类与静态变量用法的区别分析

本文实例分析了php中静态类与静态变量用法的区别。分享给大家供大家参考。具体分析如下: static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本...