web-dev-qa-db-fra.com

expression régulière dans l'instruction switch

Les expressions régulières sont-elles autorisées dans les instructions PHP switch/case et comment les utiliser?

45
Toto

L'instruction switch-case fonctionne comme if-elseif.
Aussi bien que vous pouvez utiliser l'expression régulière pour if-elseif, vous pouvez également l'utiliser dans un boîtier de commutation.

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

peut être codé comme

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

J'espère que cela t'aides.

127
bourbaki

Non ou seulement limité. Vous pouvez par exemple changer pour true:

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

Cela vous donne essentiellement un if-elseif-else, mais avec la syntaxe et la puissance de switch (par exemple fall-through.)

16
NikiC

Oui, mais vous devez utiliser cette technique pour éviter les problèmes lorsque l'argument switch passe à false:

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