要验证输入日期,包括表单URL或表单,您通常使用哪种技术?
我一直在关注PHP Filters,但我很少在任何代码上看到它们。
我经常看到使用preg_mach,例如:
$numbers = "/^[0-9]+$/D";
if (preg_match($numbers, $var)){
echo "is number";
}
而不是:
if(!filter_var($var, FILTER_VALIDATE_INT))
echo "is number";
}
使用这些或其他方面是否有任何优势? 谢谢!
答案 0 :(得分:4)
我的两分钱:取决于。
这取决于您是否应该使用过滤函数而不是正则表达式的情况。实际上,标准非常简单:
是否存在filter_*
函数,验证完全我期望的那种输入?
filter_*
功能。正则表达式比filter_*
函数更复杂,但filter_*
和正则表达式的功能非常松散。最有可能的是,可以制作一个正则表达式来完成filter_*
函数的工作,但它不能以相反的方式工作。因此,正则表达式为表提供了更多功能和灵活性,同时也更复杂。
就个人而言,在处理简单输入(整数,日期,时间)时,我使用filter_*
函数,而更复杂的输入或非常特定或自定义输入(自定义标识符应以字母开头和结尾)中间有3位数字)更适合正则表达式。
答案 1 :(得分:3)
Php为php 5.2引入了各种类型的变量验证的filer_功能。使用filter_var ||是一种很好的做法filter_input满足您的需求。
除了它更安全之外,它还可以节省大量的开发时间,使你的头脑超过正则表达式。
答案 2 :(得分:1)
你绝对应该使用过滤器。它专门用于验证。正则表达式总是自定义的,如果你自己编写,你可以忘记许多需要检查的东西。
答案 3 :(得分:1)
两者都做同样的事情,但过滤器似乎是更简单和更好的选择,如果你愿意,你也可以使用值范围。
如果你想做其他只检查有效数字和更复杂的涉及字符串的事情,那么使用正则表达式可能就是这样。