Как использовать filter_var для возврата true или false, если значение соответствует фильтру?

Есть ли способ использовать filter_var в php для возврата true, если значения соответствуют правильному фильтру, и false в противном случае?

То, что я пытаюсь получить, это:

filter_var('[email protected]', FILTER_VALIDATE_EMAIL) => true
filter_var('http://google.com', FILTER_VALIDATE_URL) => true
filter_var('http://google', FILTER_VALIDATE_URL) => false
filter_var('test', FILTER_VALIDATE_EMAIL) => false

Спасибо!

0

Решение

Как насчет того, чтобы обернуть эту функцию вокруг функции, которая отвечает вашим требованиям?
Например:

function my_filter_var($a, $b) {
if(filter_var($a, $b)===false){
return false;
}
else {
return true;
}
}

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

Так что эта функция будет работать следующим образом:

my_filter_var('[email protected]', FILTER_VALIDATE_EMAIL) => true
my_filter_var('http://google.com', FILTER_VALIDATE_URL) => true
my_filter_var('http://google', FILTER_VALIDATE_URL) => false
my_filter_var('test', FILTER_VALIDATE_EMAIL) => false

Вы должны скорее использовать то, что я сделал внутри функции, а не создавать функцию.

2

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

Возвращает отфильтрованное значение, если допустимо, и ложь в противном случае, поэтому это должно работать.

$valid_email = filter_var('[email protected]', FILTER_VALIDATE_EMAIL) ? true : false;

То же самое для URL

$valid_url = filter_var('http://google.com', FILTER_VALIDATE_URL) ? true : false;
0

Из документов:

Возвращает отфильтрованные данные или FALSE в случае сбоя фильтра.

Следовательно:

if( filter_var('[email protected]', FILTER_VALIDATE_EMAIL) === FALSE ){
// Invalid
}else {
// Valid
}

Действительный код Проверять, выписываться документация для filter_var для дальнейшей информации.

0

Я хотел бы использовать что-то простое, как это:

(bool) filter_var('[email protected]', FILTER_VALIDATE_EMAIL);

который всегда приводит к логическому: https://3v4l.org/BvAdE

Также обратите внимание, что вы сказали, что ожидаете возвращения третьего примера false тем не мение http://google это совершенно правильный URL.

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