2012-05-16 21 views
0

我正在做一个字符计数函数,它可以计算tinyMce textarea的输入。 服务器端验证的代码是这样的:为什么PHP strip_tags(“是<是非常有趣<thatThis将被剥离”)返回是?

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

您可能注意到了$字符串没有标签可言,反正strip_tags()去掉一切从第一小于号上。

这是错误还是功能?

+1

,是结果,你的预期? – zerkms

+1

@MikeB:我希望'F'表示已满。 – Shubham

+0

这个问题可能会让你感兴趣:[限制包含HTML标签的文本的输入长度](http://stackoverflow.com/questions/10089062/limit-input-length-of-text-that-c​​ontains-html-标签) - 你可能会得到它与'DOMDocument-> loadHTML'一起工作,请参阅[我的答案](http://stackoverflow.com/a/10089206/367456)代码示例。 – hakre

回答

4

strip_tags其实很愚蠢。它剥离了所有东西,只是远程看起来像一个HTML标签。也就是说,从<和一些字母数字符号开始,直到关闭>或尽可能地得到。

观察到的行为在这种情况下是一个错误。但是,strip_tags然后不是对输入HTML进行纠错的工具。它的目的是剥离东西,以便其余部分可以安全地嵌入到网站中。有疑问的是,它剥去更多,这是一件好事。

+0

我不一定称它为好事,但至少它是最安全的选择。 –

+2

我不会称之为愚蠢的功能,它完全按照它的设计要做。 –

+1

@PaulBain与“哑”我只是指的事实,'strip_tags'不做任何花哨的HTML解析,纠错等。它以一种简单的方式实现,以满足90%的用例,这就是我想表达的。 – Boldewyn

相关问题