PHP switch statement with preg_match

别来无恙 提交于 2019-12-02 03:23:10

What you should do instead is something like this:

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

I don't remember if switch in PHP is strict or loose comparison, but if it's strict, just put a !! in front of each case to convert it to boolean.

A switch statement compares each case expression to the original expression in the switch(). So

case preg_match('#^/oop/page/view/\d+$#', $url):

is analogous to:

if ($url == preg_match('#^/oop/page/view/\d+$#', $url))

This is clearly not what you want. If you want to test different kinds of expressions, don't use switch(), use if/elseif/else:

if ($url == '') {
    echo 'Homepage';
} elseif (preg_match('#^/oop/page/view/\d+$#', $url)) {
    echo $url;
} else {
    echo '404 page';
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!