Поскольку PHP является динамическим языком, какой лучший способ проверить, является ли указанное поле пустым?
Я хочу убедиться, что:
- ноль считается пустой строкой
- пустая строка считается пустой
- что "0" не считается пустым
Вот что у меня так далеко:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
Должен быть более простой способ сделать это?
php
validation
Аллен Лалонд
источник
источник
Ответы:
источник
Старый пост, но кому-то это может понадобиться, как и мне;)
заменить
$str
на вашу переменную.NULL
и""
оба возвращают 0 при использованииstrlen
.источник
if(strcmp('', $var) == 0)...
Используйте функцию PHP empty (). Следующие вещи считаются пустыми
Для более подробной информации проверьте пустую функцию
источник
Я смиренно приму, если я ошибаюсь, но я проверил на своем собственном конце и обнаружил, что следующее работает для проверки переменных как string (0) "", так и NULL:
Который также может быть изменен, чтобы проверить на успех как таковой:
источник
Остерегайтесь ложных негативов от
trim()
функции - она выполняет приведение к строке перед обрезкой и, таким образом, вернет, например, «Массив», если вы передадите ей пустой массив. Это может не быть проблемой, в зависимости от того, как вы обрабатываете ваши данные, но с помощью предоставленного вами кода поле с именемquestion[]
может быть указано в данных POST и может выглядеть как непустая строка. Вместо этого я бы предложил:источник
Нет лучшего способа, но так как это операция, которую вы обычно делаете довольно часто, вам лучше автоматизировать процесс.
Большинство фреймворков предлагают способ сделать разбор аргументов легкой задачей. Вы можете построить свой собственный объект для этого. Быстрый и грязный пример:
Symfony широко использует этот вид сахара.
Но вы говорите о чем-то большем, с вашей «// Обработать ошибку здесь». Вы смешиваете 2 задания: получение данных и их обработка. Это не одно и то же.
Есть и другие механизмы, которые вы можете использовать для проверки данных. Опять же, фреймворки могут показать вам лучшие практики.
Создайте объекты, которые представляют данные вашей формы, затем присоедините процессы и откройте их. Звучит гораздо больше работы, чем взлом быстрого PHP-скрипта (и это первый раз), но он многократно используется, гибок и намного менее подвержен ошибкам, поскольку проверка формы с помощью обычного PHP быстро превращается в код спагетти.
источник
Этот проверяет массивы и строки:
источник
чтобы быть более устойчивым (табулирование, возврат ...), я определяю:
источники:
источник
Если вы хотите проверить, предоставлено ли значение для поля, это поле может быть a
string
, anarray
или unifined. Итак, достаточноисточник
empty () раньше работал для этого, но поведение empty () менялось несколько раз. Как всегда, документы php всегда являются лучшим источником точного поведения, и комментарии на этих страницах обычно предоставляют хорошую историю изменений с течением времени. Если вы хотите проверить отсутствие свойств объекта, очень защитный метод на данный момент:
источник