我有一个函数,用于在将用户输入插入数据库之前检查用户输入。它是这样的:
function fix ($data) {
if ((strlen($data) == 0) || (empty($data)) || ($data == "")) {
echo "Please try again";
die();
} else {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
}
return $data;
}
如果用户输入空格字符,为什么这个函数返回true ?
包含" "
的字符串不等于空字符串。它的长度为4(4个空格)。它也不像空字符串""
,因为它有4个字符。如果要检查字符串是否为空或只有空白,请尝试:
(参见文档:http://us.php.net/manual/en/function.ctype-space.php)
if (strlen($data) == 0 || ctype_space($data)) {
//this is empty or all whitespace
}
祝你好运!
这与PHP和false
的y值有关
$x = ''; // empty string is false
和
$x = ' ';
空格是一个字符,这意味着字符串不是空的,因此不为假。你可以用
来解决这个问题trim($x); // removes the space so we have an empty string
在你的三个检查中,一个空格将通过。
$string = ' ';
strlen($string) // == 1
empty($string) // == false
$string == '' // == false
你应该做什么?在你检查之前trim
你的字符串,因为这删除了多余的空格
trim($string);
if (strlen($data) == 0 || empty($data) || $data == "") {