Как использовать preg_match для сопоставления более чем одной переменной?

#php

#php

Вопрос:

У меня есть много переменных, которые я хочу проверить с помощью одного и того же шаблона, они выглядят следующим образом:

 $pattern = "/[$()`]/"
$one
$two
$three
etc...
  

Вместо того, чтобы писать это так:

 if (!preg_match($pattern, $one) amp;amp; !preg_match($pattern, $two) amp;amp; !preg_match($pattern, $three)) {
// do stuff
}
  

Есть ли более простой способ проверки всех этих переменных одновременно?

Ответ №1:

 <?php
$array= array($one, $two, $three);

if (in_array("$()`", $array))
  {
  echo "Match found";
  }
else
  {
  echo "Match not found";
  }
?>
  

Я надеюсь, что это сработает для вас

Комментарии:

1. Вы можете передать все свои значения в массив и только один раз проверить это в массиве, если ваш шаблон в условии массива будет выполняться, иначе нет. Я надеюсь, вы поняли, что я пытаюсь сказать.

2. Но что, если я хочу использовать регулярное выражение вместо обычного сопоставления?

3. я только реализовал эту функцию в своем носителе, но дайте мне немного времени, я проведу исследования и разработки и дам вам обратную связь.

Ответ №2:

Что насчет этого:

 $tests = array($one, $two, $three);
$tests_count = count($tests);

if (count(preg_grep('/[$()`]/', $tests, PREG_GREP_INVERT)) == $tests_count) {
    // some stuff
}
  

Если вы хотите что-то сделать, если какой-либо из тестов завершается неудачей, это может быть:

 count(preg_grep('/[$()`]/', $tests, PREG_GREP_INVERT)) > 0)