1

使用 PHP 时,如何验证简单的文本输入以检查该字段是否仅包含空格字符,我想防止使用仅包含空格的空白名称注册我的网站,其他输入也是如此比如评论?如果我检查它是否为空,它只会将其返回为非空,因为无论如何它都将空格视为字符。

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

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

还在这里对其进行了消毒,然后就验证而言,您可以只使用 empty():

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

2 回答 2

4

您可以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

于 2013-07-23T14:09:03.940 回答
3

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 作为字符串)
  • 无效的
  • 错误的
  • array() (一个空数组)
  • $var; (声明的变量,但没有值)

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

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

这个empty(0)问题是一个极端情况,但避免它可能会使您免于扯掉头发。

于 2013-07-23T15:07:16.863 回答