我有一个函数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/>";
}

如果字符串是空的,否则不执行,我不明白为什么,有人能解释一下吗?


当前回答

只需使用strlen()函数

if (strlen($s)) {
   // not empty
}

其他回答

你有答案,但在你的情况下,你可以用

return empty($input);

or

return is_string($input);

在函数中的if子句中,您引用了一个不存在的变量strTemp。但是$strTemp确实存在。

但是PHP已经有一个empty()函数可用;为什么要自己做呢?

if (empty($str))
    /* String is empty */
else
    /* Not empty */

从php.net:

返回值 如果var有一个非空值,则返回FALSE 和非零值。 考虑以下事项 是空的: * ""(空字符串) * 0(0为整数) * "0"(0作为字符串) *空 *假 * array()(空数组) * var $var;(声明了一个变量,但在类中没有值)

http://www.php.net/empty

如果你有一个字段,即serial_number,并希望检查为空,那么

$serial_number = trim($_POST[serial_number]);
$q="select * from product where user_id='$_SESSION[id]'";
$rs=mysql_query($q);
while($row=mysql_fetch_assoc($rs)){
if(empty($_POST['irons'])){
$irons=$row['product1'];
}

通过这种方式,您可以使用另一个空函数检查循环中的所有字段

PHP将空字符串计算为false,所以你可以简单地使用:

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

这是一个简短而有效的解决方案,正是你正在寻找的:

return $input > null ? 'not empty' : 'empty' ;