一种使用 switch 的方法,检查 "url/file" 是否存在于 "url/file?get.php? [request uri]

A way to use switch, to check if "url/file" is present in "url/file?get.php? [request uri]

我正在尝试检测 url 何时为 "localhost/asignaciones",但是当我通过按钮提交内容时 url 会发生变化,所以它会像这样 "localhost/asignaciones?asg=2222" 所以 case "/asignaciones" 是假的

$url = $_SERVER['REQUEST_URI'];


    switch ($url) {
    case "/asignaciones?ireelevant_stuff":
    $asignaciones = 'active_button';
    $combinaciones = 'unactive_button';
    break;
    case:
    $asignaciones = 'unactive_button';
    $combinaciones = 'active_button';
    }

对不起,我不知道怎么解释更好。

感谢@user3783243

固定码:

    $url = $_SERVER['REQUEST_URI'];     
$asiguri = 'asignaciones'; 
$comburi = 'combinaciones';
$legauri = 'legajos';
$inicuri = '/';
switch (true) {
    case strpos($url,$asiguri) === 1: //when $url = '/asignaciones' strpos returns '0' so 'asignaciones' returns '1'. when it returns 1 the code executes until the break
        $asignaciones = 'active_button';
        $combinaciones = $legajos = $inicio = 'unactive_button';

        break;
    case strpos($url,$comburi) === 1:
        $asignaciones = $legajos = $inicio = 'unactive_button';
        $combinaciones = 'active_button';
        break;
    case strpos($url,$legauri) === 1:
        $asignaciones = $combinaciones = $inicio = 'unactive_button';
        $legajos = 'active_button';
        break;
    case strpos($url, $inicuri) === 0: //leave at last because '/' is present in every other
        $asignaciones = $combinaciones = $legajos = 'unactive_button';
        $inicio = 'active_button';
        break;
    default:
        $asignaciones = $combinaciones = $legajos = $inicio = 'unactive_button';
}

您的代码有一些错误。

要检查您的 url 是否包含字符串,您可以使用 strpos PHP 函数,如下所示:

$url = $_SERVER['REQUEST_URI'];

if (strpos($url, '/asignaciones') !== false) {
    // The string $url contains "/asignaciones"
    $asignaciones = 'active_button';
    $combinaciones = 'unactive_button';
} else {
    // The string $url DOES NOT contain "/asignaciones"
    $asignaciones = 'unactive_button';
    $combinaciones = 'active_button';
}

要实现您想要的效果,您需要传入 TRUE 作为 switch 值进行检查,然后传入对案例的评估。

switch (true) {
    case ($url == "/asignaciones?ireelevant_stuff"):
        $asignaciones = 'active_button';
        $combinaciones = 'unactive_button';
    break;
    case ($url == "otherpath"):
        $asignaciones = 'unactive_button';
        $combinaciones = 'active_button';
    break;
}

手册在用户贡献中也有这样的例子,https://www.php.net/manual/en/control-structures.switch.php#9610