当使用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