PHP:必填字段的验证
我想验证一个必填字段。我使用以下条件检查字段是否为空:PHP:必填字段的验证,php,Php,我想验证一个必填字段。我使用以下条件检查字段是否为空: isset($value) && !empty($value) 但是如果我在字段中写入0,它仍然会说该字段是必需的。empty()?我试过写很多条件,但都没有达到预期效果 我看到了用户的贡献,发现: empty($var) && !is_bool($var) 我试着像这样将其添加到我的病情中,但没有成功: isset($value) && !empty($value) &&
isset($value) && !empty($value)
但是如果我在字段中写入0
,它仍然会说该字段是必需的。empty()?我试过写很多条件,但都没有达到预期效果
我看到了用户的贡献,发现:
empty($var) && !is_bool($var)
我试着像这样将其添加到我的病情中,但没有成功:
isset($value) && !empty($value) && is_bool($value)
你不能检查是否有空的。基本上你只能坚持isset测试
如果表单中的某个字段未填写,则此变量字段将不在$\u POST superglobal中,并且isset将返回false。如果用户键入0,变量名将存在于$\u POST isset中,它将返回true。我将按照以下方式执行:
function emptyTextValue($value)
{
return trim((string) $value) !== '';
}
您知道得到的只是一个字符串,因此不需要empty()函数的全部功能:
isset($_POST['yourFieldName']) && $_POST['yourFieldName'] !== ''
您可以通过以下方式替换空函数:
$value !== ""
如果它不是完全空的,那么它将验证条件。我为测试所做的是将空检查转换为strlen检查。因为PHP非常友好,所以可以对值运行字符串比较。null值将返回长度为0的字符串,而0值将返回长度为1的字符串。所以我所做的是:
if(isset($val) && strlen($val) > 0){
// Do stuff
}
尝试以下代码:
$value = 0;
if(isset($value) && $value !== "")
{
echo "Field not required";
}
else
{
echo "Field required";
}
输出:
$value = 0;
if(isset($value) && $value !== "")
{
echo "Field not required";
}
else
{
echo "Field required";
}
字段不是必需的
演示:
$value = 0;
if(isset($value) && $value !== "")
{
echo "Field not required";
}
else
{
echo "Field required";
}
说明:
$value = 0;
if(isset($value) && $value !== "")
{
echo "Field not required";
}
else
{
echo "Field required";
}
整数0是真实的。这意味着任何以布尔方式检查它的东西都会将其视为false。特别是,!空($value)
将计算为false
,因此is\u numeric甚至不会有失败的机会
短版:在这种情况下,空版太松散了。明确检查null
和'
(因此使用了数据类型!=
)。试试看
isset($value) && $value != ''
我自己发现了一个很好的条件
$value === 0 || $value === "0" ? isset($value) : isset($value) && !empty($value)
这适用于所有情况。我会检查表单是否已提交,然后修剪字段“msg”,以防出现任何空白字符,即换行符、回车符、制表符、空格,然后测试结果以确保不是空字符串,如下所示:
<?php
if ( isset($_POST['msg']) && trim($_POST['msg']) !== '') {
// other code
}
当您var\u dump
it时,$value
中实际保存了什么?您试图验证的变量是什么类型的?@ParagTyagi我正在创建自己的高级验证类。没有一个值,我正在为整型值和字符串型值编写一个条件。只是一个旁注,这个表达式是多余的:isset($value)&&!空($value)。empty()还检查变量是否已设置,因此无需执行isset()检查。@VladCazacu isset检查变量是否已设置且不为null,而empty检查变量是否为null。请注意空格。