PHP:验证必填字段

时间:2014-08-05 14:37:34

标签: php

我想验证所需的字段。我正在使用以下条件来检查该字段是否为空:

isset($value) && !empty($value)

但是如果我在字段中写0,它仍然会说该字段是必需的。 empty()函数将PHP视为空值,如PHP手册中所述,但我还应该做什么?我曾尝试写过许多条件,但它们没有按预期工作。

我看到了用户的贡献并找到了:

empty($var) && !is_bool($var)

我尝试将它添加到我这样的状态但是没有用:

isset($value) && !empty($value) && is_bool($value)

9 个答案:

答案 0 :(得分:1)

请尝试以下代码:

$value = 0;

if(isset($value) && $value !== "")
{
    echo "Field not required";
}
else
{
    echo "Field required";
}


输出:

不需要字段


演示:

http://3v4l.org/JWJbj


说明:

整数0是 truthy 。这意味着以 boolean'ish 方式检查它的任何东西都会将其视为false。特别是, !empty($value) 会评估为 false ,因此is_numeric永远不会失败。

简短版本:在这种情况下,空虚太过于愚蠢。明确检查null''(因此使用数据类型!==)。

答案 1 :(得分:0)

你无法检查是否为空。基本上你只能坚持isset测试。

如果表单中的字段未填充,则此变量字段将不在$ _POST超全局内,而isset将返回false。如果用户键入0,变量名将存在于$ _POST中,isset将返回true。

答案 2 :(得分:0)

我会这样做:

function emptyTextValue($value)
{
    return trim((string) $value) !== '';
}

答案 3 :(得分:0)

你知道所有你得到的是一个字符串,所以你不需要empty()函数的全部功能:

isset($_POST['yourFieldName']) && $_POST['yourFieldName'] !== ''

答案 4 :(得分:0)

您可以通过以下方式替换空函数:

$value !== ""

如果它不是完全空的,那么它将验证条件。

答案 5 :(得分:0)

我为测试所做的是将空检查转换为strlen检查。因为PHP非常友好,所以您可以对值进行字符串比较。值null将返回0长度字符串,而值0将返回长度为1.所以我所做的是:

if(isset($val) && strlen($val) > 0){
    // Do stuff
}

答案 6 :(得分:0)

尝试

isset($value) && $value != ''

答案 7 :(得分:0)

我自己找到了一个很好的条件。

$value === 0 || $value === "0" ? isset($value) : isset($value) && !empty($value)

这适用于所有情况。

答案 8 :(得分:0)

我会检查以确保表单已提交,然后修剪字段' msg'如果有任何空白字符,即换行符,回车符,制表符,空格,然后测试结果,以确保它不是空字符串,如下所示:

<?php
if ( isset($_POST['msg']) && trim($_POST['msg']) !== '') {

    // other code

}