带有PREG_MATCH的PHP SWITCH语句

2022-03-29 00:00:00 regex php preg-match

我在switch语句中创建preg_Match()时遇到一些问题。

我要写入preg_match/oop/page/view/[Some-number]。

目前它的工作方式如下:

如果我在浏览器http://example.com/oop/page/view/1中运行,它会显示‘404页’。 当我运行某个地址时,例如http://example.com/oop/page/view/test或甚至/oop/测试它的运行第二种情况,但还不知道如何运行。我的正则表达式肯定有问题..

public function check(){
    $url = filter_input(INPUT_GET, 'url');
    switch ($url) {
        case '':
            echo 'HomePage';
            break;
        case preg_match('#^/oop/page/view/d+$#', $url):
            echo $url;
            break;
        default:
            echo '404 page';
            break;
    }

}

解决方案

您应该这样做:

switch (true) {
  case preg_match(...):

我不记得PHP中的switch是严格的还是宽松的比较,但如果是严格的,只需在每个案例前面加一个!!就可以将其转换为布尔值。

相关文章