我想验证所需的字段。我正在使用以下条件来检查该字段是否为空:
isset($value) && !empty($value)
但是如果我在字段中写0
,它仍然会说该字段是必需的。 empty()
函数将PHP视为空值,如PHP手册中所述,但我还应该做什么?我曾尝试写过许多条件,但它们没有按预期工作。
我看到了用户的贡献并找到了:
empty($var) && !is_bool($var)
我尝试将它添加到我这样的状态但是没有用:
isset($value) && !empty($value) && is_bool($value)
答案 0 :(得分:1)
请尝试以下代码:
$value = 0;
if(isset($value) && $value !== "")
{
echo "Field not required";
}
else
{
echo "Field required";
}
的输出:强>
不需要字段
的演示:强>
的说明:强>
整数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
}