web-dev-qa-db-ja.com

switchステートメントの正規表現

正規表現はPHP switch/caseステートメントとそれらの使用方法で許可されていますか?

45
Toto

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;
}

お役に立てれば。

127
bourbaki

いいえまたは制限されています。たとえば、trueを切り替えることができます。

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

これは基本的にif-elseif-elseステートメント、ただし構文とswitchの可能性(フォールスルーなど)

16
NikiC

はい。ただし、この手法を使用して、スイッチ引数がfalseに評価されるときの問題を回避する必要があります。

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