FILTER_VALIDATE vs Preg_match. Какой из них использовать?

Чтобы проверить дату ввода, как форму 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"; } 

Есть ли какое-то преимущество, использующее то или другое? Благодаря!

Solutions Collecting From Web of "FILTER_VALIDATE vs Preg_match. Какой из них использовать?"

Php представила функциональность filer_ для широкого диапазона типов проверки переменных с php 5.2. Хорошая практика использования filter_var || filter_input для ваших нужд.

Помимо того, что это безопаснее, это также сэкономит вам много времени на разработку, раскачивая голову над регулярными выражениями.

Мои два цента: Это зависит.

Это зависит от ситуации, следует ли использовать функции фильтра над регулярным выражением. На самом деле, критерии довольно просты:

Существует filter_* функция filter_* , которая точно проверяет тип ввода, который я ожидаю?

  • Если это так, используйте эту функцию filter_* .
  • В противном случае используйте регулярное выражение.

Регулярные выражения более сложны, чем функции filter_* , но функциональность filter_* и регулярных выражений очень слабо коррелирует. Скорее всего, можно создать регулярное выражение для выполнения функции filter_* , но это не работает наоборот. Таким образом, регулярные выражения привносят повышенную функциональность и гибкость в таблицу, а также становятся более сложными.

Лично, имея дело с простыми входами (целые числа, даты, время), я использую функцию filter_* , в то время как более сложные входы или очень специфичные или пользовательские входы (пользовательский идентификатор, который должен начинаться и заканчиваться буквой и иметь 3 цифры между ними) более подходят для регулярного выражения.

Вы должны обязательно использовать фильтр. Он специально предназначен для проверки. Регулярное выражение всегда является обычным, и если вы пишете его самостоятельно, вы можете забыть многое, что нужно проверить.

Оба делают то же самое, но фильтры, по-видимому, будут более простой и приятной возможностью использования, вы также можете использовать диапазоны значений, если хотите.

Если вы хотите сделать что-то другое, просто проверяющее действительное число и немного более сложное с участием строк, то использование регулярного выражения может быть тем же путем.