Пробел в виде строки в 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, если пользователь вводит пробелы?

0

Решение

Строка, содержащая " " НЕ то же самое, что пустая строка. Он имеет длину 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
}

Удачи!

2

Другие решения

Это связано с PHP и falseзначения у

$x = ''; // empty string is false

против

$x = ' ';

Пробел — это символ, что означает, что строка НЕ ​​пуста и поэтому не ложна. Вы можете это исправить с помощью

trim($x); // removes the space so we have an empty string
0

Во всех трех ваших проверках пробел пройдет.

$string = ' ';
strlen($string) // == 1
empty($string) // == false
$string == '' // == false

Что ты должен сделать это trim Ваша строка перед вашими проверками, так как это удаляет лишние пробелы

trim($string);
if (strlen($data) == 0 || empty($data) || $data == "") {
0
По вопросам рекламы [email protected]