2016-10-21 4 views
1

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

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

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

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

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

ответ

0

Что об этом:

$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) 
1
<?php 
$array= array($one, $two, $three); 

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

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

+0

вы можете объяснить * почему * это работает? – Martin

+0

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

+0

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

Смежные вопросы