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

2022-08-30 15:13:02

我试图得到一个php if语句来拥有规则,如果一个集合变量等于“view-##”,其中#表示任何数字。使用该条件设置 if 语句的正确语法是什么?

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

答案 1

使用功能: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];
}

答案 2

您应该使用preg_match。例:

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

如果您只执行赋值,则还要考虑三元运算符

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

推荐