在if语句条件中使用正则表达式

时间:2011-06-17 18:48:03

标签: php regex if-statement

我正在尝试获取php if语句以获得规则,其中如果set变量等于“view - ##”,其中#表示任何数字。设置具有该条件的if语句的正确语法是什么?

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

2 个答案:

答案 0 :(得分:35)

使用preg_match()功能:

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

[编辑] OP另外询问他是否可以隔离这些数字。

在这种情况下,您需要(a)在正则表达式的数字周围放置括号,并(b)将第三个参数添加到preg_match()

第三个参数返回正则表达式找到的匹配项。它将返回一个匹配数组:数组的元素零将是整个匹配的字符串(在您的情况下,与输入相同),数组的其余元素将匹配表达式中的任何括号集。因此$matches[1]将是您的两位数字:

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

答案 1 :(得分:4)

您应该使用preg_match。例如:

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

如果您只是在做作业,请考虑ternary operator

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