используя регулярные выражения в условиях if - PullRequest
19 голосов
/ 17 июня 2011

Я пытаюсь получить оператор php if, чтобы иметь правило, где, если переменная набора равна «view - ##», где # означает любое число. какой будет правильный синтаксис для установки оператора if с этим условием?

if($variable == <<regular expression>>){
    $variable2 = 1;
}
else{
    $variable2 = 2;
}

Ответы [ 2 ]

36 голосов
/ 17 июня 2011

Используйте функцию preg_match():

if(preg_match("/^view-\d\d$/",$variable)) { .... }

[РЕДАКТИРОВАТЬ] ОП дополнительно спрашивает, может ли он изолировать числа.

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

Третий параметр возвращает совпадения, найденные регулярным выражением.Он вернет массив совпадений: нулевой элемент массива будет всей совпавшей строкой (в вашем случае такой же, как и входной), остальные элементы массива будут соответствовать любым наборам скобок в выражении.Поэтому $matches[1] будет вашими двумя цифрами:

if(preg_match("/^view-(\d\d)$/",$variable,$matches)) {
     $result = $matches[1];
}
4 голосов
/ 17 июня 2011

Вы должны использовать preg_match . Пример:

if(preg_match(<<regular expression>>, $variable))
{
 $variable1 = 1;
}
else
{
  $variable2 = 2;
}

Также рассмотрите троичный оператор , если вы только выполняете задание:

$variable2 = preg_match(<<regular expression>>, $variable) ? 1 : 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...