在switch语句中使用regexp

时间:2010-10-28 14:13:31

标签: php switch-statement

PHP switch / case语句中是否允许使用regex以及如何使用它们?

3 个答案:

答案 0 :(得分:126)

switch-case语句的作用类似于if-elseif 除了你可以使用if-elseif的正则表达式,你也可以在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;
}

希望这有帮助。

答案 1 :(得分:16)

不限或仅限于此。例如,您可以切换true

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

这基本上为您提供if-elseif-else语句,但语法和可能为switch(例如,落实。)

答案 2 :(得分:15)

是的,但是当switch参数篡改为false时,您应该使用此技术来避免问题:

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