【问题标题】:php check if user input is not spacephp 检查用户输入是否不是空格
【发布时间】:2013-01-11 17:40:38
【问题描述】:

我有以下代码来检查用户输入:

if(isset($_POST['block_name']) && !empty($_POST['block_name'])) {
    $block->name = trim($_POST['block_name']);
}

但它接受 SPACE 作为有效输入,所以我改为:

if(isset($_POST['block_name']) && !empty($_POST['block_name']) && trim($_POST['block_name'])!='') {
        $block->name = trim($_POST['block_name']);
    }

我在网上发现我也可以使用 !=false。有什么区别,推荐哪个。

【问题讨论】:

  • 请先阅读empty 上的文档。您关于false 的问题也在manual 中得到解答。

标签: php validation input


【解决方案1】:

毕竟我认为这种方式是最好的:

if(isset($_POST['block_name']) && strlen(trim($_POST['block_name'])) > 1) {
        $block->name = trim($_POST['block_name']);
    }
    else {
        $errors[] = "Please give a name for the new block. It should be at least 2 characters";
    }

感谢 deceze 的回答。

【讨论】:

    【解决方案2】:

    使用这个条件语句。我希望它会起作用。

    if `$custSTR` is a sample string having spaces.
    
    $custSTR = '     ';
    if (strlen(trim(preg_replace('/\xc2\xa0/',' ',$custSTR))) == 0)
    {
        echo "custSTR have space or empty.\n";
    }
    

    【讨论】:

      【解决方案3】:

      '' 等于 false 在松散的比较中,所以没有真正的区别。由于'0' 也等于false,因此您可能希望使您的检查更加严格。 empty 也只是检查false,如果未设置变量,则不会触发错误。所以isset && !empty 一开始就是多余的。

      用途:

      if (isset($_POST['block_name']) && strlen(trim($_POST['block_name'])) > 0)
      

      【讨论】:

      • 非常感谢。我不知道 trim($_POST['name']) 不接受 0。所以现在我使用 if(isset($_POST['block_name']) && trim($_POST['block_name'])!= '') 这样 0 也可以被接受为单个字符。现在我的代码有什么不好的地方吗?
      【解决方案4】:

      if(empty($_POST['block_name'])) 应该检查:

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

      所以,最好使用:if(!empty(trim($_POST['block_name']))) { //proceed...

      【讨论】:

      • 我不认为空的作品与表达式:) 手册说只有 5.5 支持他们
      • 致命错误:不能在写上下文中使用函数返回值
      • @jCloud .. 最好在变量中分配$blockName = $_POST['block_name'] 然后尝试empty 实际上是if(!empty($blockName))
      • 如果 $_POST['block_name'] 没有设置会发生什么
      • 如果不设置,if条件将不满足。
      【解决方案5】:

      你可以检查空格

        if( (strlen($string) == 1 ) && strpos(trim($string)," ")){
      
         echo "the string contains only a blank space";
      
        }
      

      【讨论】:

      • 这应该达到什么目的?
      • @Jon 希望 OP 检查字符串内部是否只有一个空格?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多