php strip_tags和filter_var函数有什么区别?

时间:2018-02-06 09:11:28

标签: php

它们似乎都是html,javascript标签。那么何时使用哪个? 我试过像

一样
<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo strip_tags($user_input);

?>

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);

?>

3 个答案:

答案 0 :(得分:3)

strip_tags()就是这么做的。根据PHP文档,它:

  

从字符串中删除HTML和PHP标记

filter_var()为您提供了更多功能,因为您可以使用不同的过滤器,例如FILTER_SANITIZE_EMAIL将清理字符串以返回有效的电子邮件。

根据 FILTER_SANITIZE_STRIPPED strip_tagsfilter_var之间存在差异,具体而言,strip_tags将允许小于symbol,而FILTER_SANITIZE_STRIPPED将使用filter_var将其删除。

即:

strip_tags("testing < practice") will return "testing < practice"
filter_var("testing < practice", FILTER_SANITIZE_STRIPPED) will return "testing "

答案 1 :(得分:0)

strip_tags严格过滤给定字符串中的所有html和php标记。

filter_var根据您可以提供的多个不同标志过滤掉。 它不会纠正字符串,但会对其进行验证

IE:如果你将filter_var与flag:FILTER_VALIDATE_EMAIL一起使用,如果你给它一个有效的电子邮件地址,它将按原样返回,而无效的电子邮件将返回false

答案 2 :(得分:0)

Strip_tags 允许您选择定义您可能希望取消剥离的标签,而 filter_var sanitize 则不需要。