Использование регулярных выражений в условиях выражения if

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

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

Ответы

Ответ 1

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

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

[EDIT] OP дополнительно запрашивает, если он может выделить числа.

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

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

if(preg_match("/^view-(\d\d)$/",$variable,$matches)) {
     $result = $matches[1];
}

Ответ 2

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

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

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

$variable2 = preg_match(<<regular expression>>, $variable) ? 1 : 2;