FILTER_VALIDATE_REGEXP пусто

Я пытаюсь проверить поле с помощью php. Я передаю значение с помощью POST, и оно должно содержать только цифры и pipi («|»).

Я использую filter_input для проверки правильности значения:

filter_input(INPUT_POST,"q",FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>"/^\s{0,}[0-9|]{0,}\s{0,}$/"));

Это регулярное выражение проверяет числа, «|» и необязательные пробелы до и после. Это должно также проверить пустое поле, но это не так. Если поле пустое, filter_input возвращает FALSE.

Как я могу проверить также пустое поле? Я хочу принять также пустой как действительный.

Все работает, когда дата поля компилируется. Когда дата пуста, дата не проверяется.

1

Решение

Ваше регулярное выражение соответствует пустой строке как есть

с вводом ничего вы не получите

string '' (length=0)

Когда ввод отсутствует, однако это другой случай.

это задокументировано

или NULL, если переменная variable_name не установлена.

http://php.net/manual/en/function.filter-input.php

приведение к строке будет «работать», так как нулевое приведение к пустой строке

так

(string) filter_input(INPUT_POST,"q",FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>"/^\s{0,}[0-9|]{0,}\s{0,}$/"));

будет работать как вы ожидаете

литейная документация

NULL всегда преобразуется в пустую строку.

http://php.net/manual/en/language.types.string.php#language.types.string.casting

0

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

Других решений пока нет …

По вопросам рекламы [email protected]