Использовать preg_match () результат с (bool)? - PullRequest
0 голосов
/ 19 апреля 2020

Я думаю, что буду использовать результат preg_match() с (bool), но я не совсем уверен. Я думаю, что не ясно, что результат не true или false. Пример 1:

if (((bool) preg_match($pattern, $string, $matches)) === true)

Пример 2:

if (((bool) !preg_match($pattern, $string, $matches)) === true)

Пример 3:

if (((bool) preg_match($pattern, $string, $matches)) === false)

Пример 4:

if (((bool) !preg_match($pattern, $string, $matches)) === false)

Другой Мысль такова: безопасна ли вещь с результатом 0 или 1 в будущем? У вас есть опыт с этим? Что вы можете сообщить?

РЕДАКТИРОВАТЬ 0: С учетом if без операторов сравнения, вопрос расширен. 0 всегда false и 1 всегда true?

Пример 5:

if ((preg_match($pattern, $string, $matches)))

Пример 6:

if ((!preg_match($pattern, $string, $matches)))

Это правильно? ?
(preg_match($pattern, $string, $matches)) = 0 | 1
(!preg_match($pattern, $string, $matches)) = true | false
Нет!

1 Ответ

1 голос
/ 20 апреля 2020

preg_match () возвращает 1, если шаблон соответствует заданному предмету, 0, если нет, или FALSE, если произошла ошибка. Это 3 возможных ответа. Если это значение уменьшается до значения bool (true / false), некоторая информация теряется.

$result = (bool) preg_match($pattern, $string, $matches);

$ result - true, если шаблон соответствует, и false, если нет или произошла ошибка.

Это если условие выполняется только в том случае, если preg_match возвращает 1.

if (preg_match($pattern, $string, $matches)) {

}

Если не выполнено, может быть не совпадение или ошибка.

Для различения необходимо строгое сравнение guish все 3 варианта:

$preg_match_result = preg_match($pattern, $string, $matches);

if($preg_match_result === 1) {
  //pattern matches

}
elseif($preg_match_result === 0) {
  //pattern not matches

}
else {
  //$preg_match_result === false   
  //an error occurred

}
...