PHP防止提交只包含“”的空字段;空间“;字符


PHP Prevent the submission of empty fields containing only "space" characters

当使用PHP时,我如何验证简单的文本输入以检查字段是否只包含空格字符,我想防止使用仅由空格组成的空白名称注册我的网站,而其他输入(如注释)也是如此?如果我检查它是否为空,它只会将其返回为非空,因为它将空间视为一个字符。

为了将来参考,答案是首先修剪我的帖子数据:

$variable = mysql_real_escape_string(stripslashes(trim($_POST['field'])));

也在这里对其进行了消毒,然后作为验证,您可以使用empty():

if(empty($variable)) {
//do something
}

trim()将根据文档删除前导/尾随空白:

从字符串的开头和结尾去掉空白(或其他字符)

如前所述,empty()将返回一个布尔值(并且需要5.5之前的变量参数),指示传递的变量是否为""。

但是,这可能会导致一些特殊的行为。考虑以下内容:

$value = "0";            // possibly a perfectly valid non-empty value *
var_dump(empty($value)); // bool(true) ... what?

*我可以预见:"我因公开猥亵被捕了多少次?嗯,0…无效输入!?它怎么知道!?"

PHP将只计算一个字符串"0"为空:

  • "(空字符串)
  • 0(0为整数)
  • 0.0(0作为浮点值)
  • "0"(0作为字符串)
  • NULL
  • 虚假的
  • array()(空数组)
  • $var;(已声明但没有值的变量)

你最好的选择是通过相同的等式(也测试类型)来测试修剪后的字符串与空字符串:

if (trim($value) !== '') {
    // the string wasn't empty
    // after calling trim()
}

empty(0)问题是一个边缘问题,但避免它可能会使你免于头发脱落。

您可以trim发布的输入,并查看其empty是否显示错误。

if(empty(trim($_POST['comments'])))
{
    // Its empty so throw a validation error
    echo 'Input is empty!'; 
}
else
{
    // Input has some text and is not empty.. process accordingly.. 
}

有关trim()的更多信息,请点击此处:http://php.net/manual/en/function.trim.php