如果没有留空,则验证PHP表单字段

时间:2011-06-30 19:34:15

标签: php validation

我的PHP表单验证有点问题,我可以使用一些帮助。

我有一个可选字段,只有在用户填写时才应该验证,否则表格应该正常处理。以下是该领域的验证:

if (!preg_match("/(0?\d|1[0-2]):(0\d|[0-5]\d) (AM|PM)/i", '$start')) :
        $errors->add('submit_error', __('<strong>ERROR</strong>: The time is incorrect', 'appthemes'));
        endif;

可能很简单,但目前我无法理解如果该字段留空,如何绕过验证。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

if(!empty($your_field) && !preg_match(...))

PHP在测试正则表达式之前测试该字段是否为null。 如果该字段为空,PHP将跳转到下一条指令。

答案 1 :(得分:1)

将其余代码包装在其中,只有在$ start不为空时才会触发,

if (trim($start)) {
    // put other code in here
}

答案 2 :(得分:0)

你有没有试过这样的事情:

if (!empty($_POST['field_name'])) {
if(!preg_match("/(0?\d|1[0-2]):(0\d|[0-5]\d) (AM|PM)/i", '$start')) :
    $errors->add('submit_error', __('<strong>ERROR</strong>: The time is incorrect', 'appthemes'));
}

首先会查看该字段的状态,然后根据需要转到验证。

EDIT 对不起,刚刚意识到有一种最佳方式:

if(!empty($start) && !preg_match("/(0?\d|1[0-2]):(0\d|[0-5]\d) (AM|PM)/i", '$start')) :
    $errors->add('submit_error', __('<strong>ERROR</strong>: The time is incorrect', 'appthemes'));
endif;

为什么!empty($start)?因为它使用标准PHP函数来定义值是否存在。不是100%必需,但最佳做法是在确定值是否存在时使用empty()函数。

答案 3 :(得分:0)

假设您的表单数据存储在$start

if ($start && !preg_match("/(0?\d|1[0-2]):(0\d|[0-5]\d) (AM|PM)/i", '$start')) :
        $errors->add('submit_error', __('<strong>ERROR</strong>: The time is incorrect', 'appthemes'));
        endif;