PHP 函数 strip_tags 处理字符串缺陷 Bug
PHP 函数strip_tags()
是一个常用函数,该函数可以剥去字符串中的 HTML、XML 以及 PHP 的标签。极大方便了对字符串的操作,但是strip_tags()
函数存在缺陷 Bug,原因是strip_tags()
无法验证 HTML 不完整或者破损标签将导致更多的数据被删除。
例子:
$str = '<div>string</div>string<string<b>hello</b><div>string</div>';
echo strip_tags($str, '<div>');
输出:
<div>string</div>string
通过strip_tags()
函数过滤<b>
标签,其实我希望得到下面这个结果:
<div>string</div>string<stringhello<div>string</div>
导致未能得到期望结果的原因,是因为字符串中第三个<string
左边那个尖括号,strip_tags()
函数误删除了其他字符。
经过查找 PHP 相关文档发现strip_tags()
函数,有一个警告,警告内容是,由于strip_tags()
无法实际验证 HTML,不完整或者破损标签将导致更多的数据被删除。
既然不能验证 HTML 标签完整性,所以遇到字符串中包含“<”或“>”导致误删字符串中其它字符。使用strip_tags()
函数需要慎重考虑。另外一个思路就是,用正则表达式过滤标签。
参考文献
PHP 文档:PHP: strip_tags - Manual
(完)