PHP中空格字符作为字符串


Space character as string in PHP?

我有一个函数,用于在将用户输入插入数据库之前检查用户输入。它是这样的:

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 == "") {