PHP函数strip_tags的一个bug浅析

yipeiwu_com6年前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字符串过滤strip_tags()函数用法实例分析

本文实例讲述了php字符串过滤strip_tags()函数用法。分享给大家供大家参考,具体如下: strip_tags — 从字符串中去除 HTML 和 PHP 标记,非常重要的函数 (...

PHP获取用户访问IP地址的5种方法

本文实例为大家分享了5种PHP获取用户访问IP地址的方法,供大家参考,具体内容如下 <?php...

php strcmp使用说明

以区分大小写的方式比较两个字符串 Strcmp()函数对两个字符串进行二进制安全的比较,并区分大小写。其形式为: int strcmp ( string str1 , string st...

PHP 读取大文件的X行到Y行内容的实现代码

需要读取一个文件的几行内容,但是文件比较大,所以研究了下php读取大文件的几行内容的方法,写了一个方法,代码如下(加了注释): 缓存文件如果能够保存在一行, 而利用算法读取指定的行数,...

PHP面向对象程序设计重载(overloading)操作详解

本文实例讲述了PHP面向对象程序设计重载(overloading)操作。分享给大家供大家参考,具体如下: 重载 PHP中的”重载”与其它绝大多数面向对象语言不同,只是他们都是用的相同的名...