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