为什么检查字符串是否为空的函数总是返回 true?[已关闭]

2022-08-30 06:15:11

我有一个函数 isNotEmpty,如果字符串不为空,则返回 true;如果字符串为空,则返回 false。我发现如果我通过它传递一个空字符串,它就不起作用。

function isNotEmpty($input) 
{
    $strTemp = $input;
    $strTemp = trim($strTemp);

    if(strTemp != '') //Also tried this "if(strlen($strTemp) > 0)"
    {
         return true;
    }

    return false;
}

使用 isNotEmpty 对字符串的验证已完成:

if(isNotEmpty($userinput['phoneNumber']))
{
    //validate the phone number
}
else
{
    echo "Phone number not entered<br/>";
}

如果字符串是空的,否则不会执行,我不明白为什么,有人可以请对此有所了解吗?


答案 1

实际上很简单的问题。改变:

if (strTemp != '')

if ($strTemp != '')

可以说,您可能还想将其更改为:

if ($strTemp !== '')

因为 如果您传递的是数字 0,则将返回 true,并且由于 PHP 的自动类型转换而出现其他一些情况。!= ''

不应该使用内置的 empty() 函数来做到这一点;请参阅注释和 PHP 类型比较表


答案 2

我总是使用正则表达式来检查空字符串,可以追溯到CGI / Perl时代,以及Javascript,所以为什么不使用PHP,例如(尽管未经测试)

return preg_match('/\S/', $input);

其中表示任何非空格字符\S


推荐