免责声明
这不是一个关于我们是否应该为数据库输入进行转义的问题。这仅仅是在技术层面上看三个标题中函数之间的区别。
有这个问题讨论了htmlentities()
和htmlspecialchars()
之间的区别。但是,它并没有真正讨论filter_var()
,而我在谷歌上找到的信息更多的是“确保在echo之前转义用户输入!”
我的问题是:
- 为什么常用
htmlspecialchars()
和htmlentities()
而不是filter_var()
? - 使用
filter_var()
会有性能损失吗? filter_var()
是否不像其他两个选项那样安全?- 除了以下代码对用户输入进行编码以被
echod
外,还有什么其他原因不使用它?
filter_var($var, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
htmlentities
/htmlspecialchars
允许您通过将第四个参数设置为false
来防止双重编码实体。我不确定是否可以通过filter_var
实现这一点。 - ryanve