这个错误让我很困惑。 -
警告:preg_match()需要至少2个参数,第98行/home/s1lentec/public_html/restricted/registration-process.php中给出的参数为1
以下是代码 -
if (isset($_POST["zipCode"]) && $_POST["zipCode"] != "") {
if (!preg_match("/^[0-9\-]$/")) {
if (strlen($_POST["zipCode"] != 5) || strlen($_POST["zipCode"] != 9) || strlen($_POST["zipCode"] != 10)) {
$_SESSION["error"][] = "ZIP code is not valid. Valid format is xxxxx or xxxxx-xxxx";
}
}
}
奇怪的是,下一段代码几乎完全相同,并且不会引发任何错误 -
if (isset($_POST["phoneNumber"]) && $_POST["phoneNumber"] != "") {
if (!preg_match("/^[0-9\-]$/")) {
if (strlen($_POST["phoneNumber"] != 7) || strlen($_POST["phoneNumber"] != 8) || strlen($_POST["phoneNumber"] != 10) || strlen($_POST["phoneNumber"] != 12)) {
$_SESSION["error"][] = "Phone number is not valid. Valid format is xxx-xxxx or xxx-xxx-xxxx";
}
}
}
我甚至将后者复制/粘贴到前者的位置,它仍然会抛出相同的错误。甚至他们的数据库属性也是一样的。任何帮助将不胜感激,我已经修复了其他错误,并尝试减少/隔离此错误,但我只是无法搞清楚。 :/
答案 0 :(得分:0)
Preg_match需要两个参数,即您正在检查的变量和正则表达式。所以在这种情况下应该是这样的: if(!preg_match(" / ^ [0-9 - ] $ /",$ _POST ['邮政编码n#39;]))
答案 1 :(得分:0)
该功能与其他人一样说需要2个参数,而你只传递了一个参数。
但是由于其中一个块显示错误而另一个块没有显示错误,是因为PHP只会在运行的代码中抛出错误。如果你的if
语句中的代码从未发生过,那么if
语句中的代码即使错误也不会引发错误。
在上面的情况中,您可能没有发送/设置phoneNumber
变量,因此preg_match
函数永远不会运行。
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
此外,要稍微清理代码,而不是同时运行isset()
并检查变量是否为空,您可以使用函数empty()
。
if(isset($_POST["phoneNumber"]) && $_POST["phoneNumber"] != "") { }
变成
if(!empty($_POST['phoneNumber'])) { }
可以在PHP.net
找到preg_match
的PHP参考