0

我即将制作一个字符计数函数来计算来自 tinyMce 文本区域的输入。使用如下代码进行服务器端验证:

$string = "is<isvery interesting <thatthis willbe stripped";
$stripped = strip_tags($string);
$count = strlen($stripped); // This will return 2

您可能会注意到 $string 根本没有标签,无论如何strip_tags()都会从第一个小于号上删除所有内容。

这是错误还是功能?


strip_tags实际上很愚蠢。它剥离了一切,只是远程看起来像一个 HTML 标记。也就是说,从<和一些字母数字符号开始,直到结束>或尽可能远。

在这种情况下,观察到的行为是一个错误。但是,strip_tags它不是对输入的 HTML 进行纠错的工具。它的目的是剥离东西,以便将剩余的东西安全地嵌入网站。毫无疑问,它剥离得更多,这是一件好事。

4

2 回答 2

4

这已被记录在案:

因为 strip_tags() 实际上并不验证 HTML,部分或损坏的标签可能会导致删除比预期更多的文本/数据。

http://php.net/manual/en/function.strip-tags.php

于 2012-05-16T10:41:05.950 回答
4

strip_tags实际上很愚蠢。它剥离了一切,只是远程看起来像一个 HTML 标记。也就是说,从<和一些字母数字符号开始,直到结束>或尽可能远。

在这种情况下,观察到的行为是一个错误。但是,strip_tags它不是对输入的 HTML 进行纠错的工具。它的目的是剥离东西,以便将剩余的东西安全地嵌入网站。毫无疑问,它剥离得更多,这是一件好事。

于 2012-05-16T10:40:22.520 回答