Declaración de cambio de PHP con preg_match

Tengo algún problema para crear un preg_match () dentro de mi declaración de cambio.

Quiero escribir preg_match que coincida con / oop / page / view / [algún número].

Por ahora funciona como:

Si corro en mi navegadorhttp://example.com/oop/page/view/1 muestra 'página 404'. Y cuando ejecuto alguna dirección, por ejemplohttp://example.com/oop/page/view/test o incluso / oop / prueba su segundo caso de ejecución y todavía no sé cómo. Seguro que algo está mal en mi expresión regular.

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

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta