Чтобы проверить дату ввода, как форму URL, так и форму, какую технику вы обычно используете?
Я смотрел PHP Filters, но я редко вижу их на любом коде.
Я обычно видел использование preg_mach, например:
$numbers = "/^[0-9]+$/D"; if (preg_match($numbers, $var)){ echo "is number"; }
Вместо:
if(!filter_var($var, FILTER_VALIDATE_INT)) echo "is number"; }
Есть ли какое-то преимущество, использующее то или другое? Благодаря!
Php представила функциональность filer_ для широкого диапазона типов проверки переменных с php 5.2. Хорошая практика использования filter_var || filter_input для ваших нужд.
Помимо того, что это безопаснее, это также сэкономит вам много времени на разработку, раскачивая голову над регулярными выражениями.
Мои два цента: Это зависит.
Это зависит от ситуации, следует ли использовать функции фильтра над регулярным выражением. На самом деле, критерии довольно просты:
Существует filter_*
функция filter_*
, которая точно проверяет тип ввода, который я ожидаю?
filter_*
. Регулярные выражения более сложны, чем функции filter_*
, но функциональность filter_*
и регулярных выражений очень слабо коррелирует. Скорее всего, можно создать регулярное выражение для выполнения функции filter_*
, но это не работает наоборот. Таким образом, регулярные выражения привносят повышенную функциональность и гибкость в таблицу, а также становятся более сложными.
Лично, имея дело с простыми входами (целые числа, даты, время), я использую функцию filter_*
, в то время как более сложные входы или очень специфичные или пользовательские входы (пользовательский идентификатор, который должен начинаться и заканчиваться буквой и иметь 3 цифры между ними) более подходят для регулярного выражения.
Вы должны обязательно использовать фильтр. Он специально предназначен для проверки. Регулярное выражение всегда является обычным, и если вы пишете его самостоятельно, вы можете забыть многое, что нужно проверить.
Оба делают то же самое, но фильтры, по-видимому, будут более простой и приятной возможностью использования, вы также можете использовать диапазоны значений, если хотите.
Если вы хотите сделать что-то другое, просто проверяющее действительное число и немного более сложное с участием строк, то использование регулярного выражения может быть тем же путем.