当前位置:  开发笔记 > 编程语言 > 正文

检查字符串是否为空

如何解决《检查字符串是否为空》经验,为你挑选了6个好方法。

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

如果字符串是空的,否则不会执行,我不明白为什么,请有人请说明这一点.



1> cletus..:

实际上简单的问题 更改:

if (strTemp != '')

if ($strTemp != '')

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

if ($strTemp !== '')

因为PHP的自动类型转换,!= ''如果传递的是数字0和其他一些情况,则返回true .

不应该使用内置的empty()函数; 请参阅注释和PHP类型比较表.


不要使用empty()!对于诸如"0"的值,empty()将返回true.请参阅php.net/manual/en/types.comparisons.php
你不想使用empty().考虑一串空格:$ x =""; 的var_dump(空($ x)的!);/*(TRUE)*/var_dump(isNotEmpty($ x));/*(假)*/
@cletus:然后考虑一个字符串$ s ='0'.如果你调用空($ s)它将评估为true(不直观imho,但它是如此).
可以说,将if改为:return $ strTemp!=='';
OP正在修剪字符串.在这种情况下它是适当的.

2> 小智..:

PHP有一个内置函数,称为empty() 测试是通过输入 if(empty($string)){...} 引用php.net:php empty来完成的


不要使用empty()!对于诸如"0"的值,empty()将返回true.见http://php.net/manual/en/types.comparisons.php
@TomasZubiri是的,包含"0"的字符串将返回true.
空引用已经在cletus接受的答案结束时.请看这个问答帖子是从2009年4月开始的.无论如何,感谢您的意见.我给你第一个答案的+1.
@ScottDavidTesler如果字符串为"0",它会返回true吗?或者只有它是整数0?
请,没有其他人支持这个错误的答案-阅读以上评论!

3> George Jempt..:

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

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

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



4> Björn..:

在函数的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


并非所有实现都希望将"0"评估为空.如果他想要那样,他也不能使用if($ x)比较,即If(!trim($ str))?
您的版本实际上不起作用:空对变量有效,而不对表达式有效.

5> troelskn..:

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

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


这个工作正常,直到你通过0.否则这个想法很棒,我会在其他地方把它给我们.感谢您的答复.

6> justyy..:

只需使用strlen()函数

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


不输入保存.在`Php 5.3`之前,如果`$ s`是`array`类型,函数将返回`5`.`Php> 5.3`将会出现异常.我建议使用`is_string($ s)&& str_len($ s)> 0`.`> 0`仅供阅读之用.
推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有