php switch语句中的正则表达式

eqoofvh9  于 2022-12-25  发布在  PHP
关注(0)|答案(4)|浏览(240)

PHP switch/case语句中允许使用正则表达式吗?如何使用它们?

wa7juj8i

wa7juj8i1#

switch case语句的工作原理类似于if-elseif。
你可以在if-elseif中使用regex,也可以在switch-case中使用它。

if (preg_match('/John.*/', $name)) {
    // do stuff for people whose name is John, Johnny, ...
}

可编码为:

switch $name {
    case (preg_match('/John.*/', $name) ? true : false) :
        // do stuff for people whose name is John, Johnny, ...
        break;
}
xpszyzbs

xpszyzbs2#

否或仅有限。例如,您可以切换为true

switch (true) {
    case $a == 'A':
        break;
    case preg_match('~~', $a);
        break;
}

这基本上给出了一个if-elseif-else语句,但是使用了switch的语法和可能性(例如fall-through)。

mitkmikd

mitkmikd3#

可以,但是您应该使用此技术来避免switch参数取值为false时出现的问题:

switch ($name) {
  case preg_match('/John.*/', $name) ? $name : !$name:
    // do stuff
}
qkf9rpyu

qkf9rpyu4#

请记住,上面的答案可以稍微优化如下:
变更:

switch $name {
    case (preg_match('/John.*/', $name) ? true : false) :
        // do stuff for people whose name is John, Johnny, ...
        break;
}

收件人:

switch $name {
    case (bool)preg_match('/John.*/', $name) :
        // do stuff for people whose name is John, Johnny, ...
        break;
}

相关问题