Disclaimer
This is not a question about whether we should be escaping for database input. This is strictly looking at the technical differences between the three functions in the title.
There is this question discussing the difference between htmlentities()
and htmlspecialchars()
. But, it doesn't really discuss filter_var()
and the information I found on Google was more along the lines of "Make sure you escape user input before it is echo'd!"
My questions are:
htmlspecialchars()
and htmlentities()
commonly used over filter_var()
? filter_var()
? filter_var()
not as secure as the other two options?echod
filter_var($var, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
My guess (about lack of adoption) would be it's simply because the Filter extension is only enabled by default since v5.2, whereas the html* methods have been around longer.