У меня есть функция, которая проверяет пользовательский ввод, прежде чем он вставляется в базу данных. Это что-то вроде этого:
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
значения у
$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 == "") {