检查字符串是否为空

时间:2009-04-05 14:18:12

标签: php string validation

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

如果字符串是空的,则其他内容不会执行,我不明白为什么,请有人请说明这一点。

17 个答案:

答案 0 :(得分:278)

实际上是个简单的问题。变化:

if (strTemp != '')

if ($strTemp != '')

可以说你可能还想把它改成:

if ($strTemp !== '')

因为如果您传递的是!= '',则会返回true,因为PHP's automatic type conversion会传递数字0和其他一些案例。

不应该使用内置的empty()功能;请参阅评论和PHP type comparison tables

答案 1 :(得分:33)

PHP有一个名为empty()的内置函数 测试是通过打字完成的 if(empty($string)){...} 参考php.net:php empty

答案 2 :(得分:17)

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

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

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

答案 3 :(得分:16)

在函数的if子句中,您指的是一个不存在的变量'strTemp'。但是,“$ strTemp”确实存在。

但PHP已经有一个空() - 函数可用,为什么要自己创建?

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

来自php.net:

  

返回值

     

如果var具有非空,则返回FALSE   和非零值。

     

考虑以下事项   是空的:

* "" (an empty string)
* 0 (0 as an integer)
* "0" (0 as a string)
* NULL
* FALSE
* array() (an empty array)
* var $var; (a variable declared, but without a value in a class)

http://www.php.net/empty

答案 4 :(得分:14)

PHP将空字符串计算为false,因此您只需使用:

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

答案 5 :(得分:10)

只需使用strlen()函数

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

答案 6 :(得分:3)

嗯,而不是答案(我相信你已经解决了问题),我会给你一些建议。

我不了解所有其他人,但我个人对看到类似的事情感到非常恼火:

if(<<condition>>)
    {
         return true;
    }

    return false;

这要求优雅的“return (<<condition>>);”解决方案。请始终查看您的代码并删除此类逻辑。 每个情况都不需要IF语句。

答案 7 :(得分:3)

我只是编写自己的函数is_string进行类型检查,strlen来检查长度。

function emptyStr($str) {
    return is_string($str) && strlen($str) === 0;
}

print emptyStr('') ? "empty" : "not empty";
// empty

Here's a small test repl.it

编辑:您还可以使用trim函数来测试字符串是否也为空。

is_string($str) && strlen(trim($str)) === 0;    

答案 8 :(得分:2)

这里是检查字符串是否为空的简短方法。

$input; //Assuming to be the string


if(strlen($input)==0){
return false;//if the string is empty
}
else{
return true; //if the string is not empty
}

答案 9 :(得分:0)

如果你有一个字段,即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'];
}

通过这种方式,您可以使用另一个空函数

来解决循环中的所有文件

答案 10 :(得分:0)

也许你可以试试这个

if(isNotEmpty($userinput['phoneNumber']) == true)

这是因为php.ini中的php配置

答案 11 :(得分:0)

你得到了答案,但在你的情况下,你可以使用

return empty($input);

return is_string($input);

答案 12 :(得分:0)

您可以简单地将其转换为bool

(bool)$string;

function isEmpty(string $string): bool {
   return (bool)$string;
}

答案 13 :(得分:0)

我知道这个线程已经很老了,但是我只想共享我的一个功能。下面的此函数可以检查空字符串,最大长度,最小长度或确切长度的字符串。如果要检查空字符串,只需将$ min_len和$ max_len设置为0。

function chk_str( $input, $min_len = null, $max_len = null ){

    if ( !is_int($min_len) && $min_len !== null ) throw new Exception('chk_str(): $min_len must be an integer or a null value.');
    if ( !is_int($max_len) && $max_len !== null ) throw new Exception('chk_str(): $max_len must be an integer or a null value.'); 

    if ( $min_len !== null && $max_len !== null ){
         if ( $min_len > $max_len ) throw new Exception('chk_str(): $min_len can\'t be larger than $max_len.');
    }

    if ( !is_string( $input ) ) {
        return false;
    } else {
        $output = true;
    }

    if ( $min_len !== null ){
        if ( strlen($input) < $min_len ) $output = false;
    }

    if ( $max_len !== null ){
        if ( strlen($input) > $max_len ) $output = false;
    }

    return $output;
}

答案 14 :(得分:0)

我需要测试PHP中的空字段并使用

ctype_space($tempVariable)

对我来说很好。

答案 15 :(得分:0)

<option value=""> Default </option>
<option value="true" {{app('request')->input('status') ? 'selected' : ''}}> 1 </option>
<option value="false" {{!is_null(app('request')->input('status')) && app('request')->input('status') == 0 ? 'selected' : '' }}> 2 </option>

答案 16 :(得分:-1)

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

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