如何在php中检索多个url参数

I have 4 parameter in my URL. I retrieve the url parameter from my url that is given. With every parameter I'm changing the path to a directory and get different images.

My sample url look like this:

www.sample.com?cat=section1&language=de&prices=pl

The code is working but it's a spagheti code.

Is there a solution to make is less DRY ? How do I retrieve multiple url parameter ?

if(isset($_GET["cat"])) {
switch ($cat) {
case 'section1':
if(isset($_GET["language"])) {
        $language = htmlspecialchars($_GET["language"]);
        if($language == "de") {
            if(isset($_GET["prices"])) {
                $prices = htmlspecialchars($_GET["prices"]);
                if($prices == "pl"){
                    $files=glob('pages/section1/dp/low/*.jpg');
                }
                else {
                    $files=glob('pages/section1/dn/low/*.jpg');
                }   
            }
            else {

                    $files=glob('pages/section1/dn/low/*.jpg');
            }
        }
        elseif ($language == "en") {
            if(isset($_GET["prices"])) {
                $prices = htmlspecialchars($_GET["prices"]);
                if($prices == "pl"){
                        $files=glob('pages/section1/ep/low/*.jpg');
                }
                else {
                        $files=glob('pages/section1/en/low/*.jpg');
                }   
            }
            else {
                    $files=glob('pages/section1/en/low/*.jpg');
            }   
        }
        elseif ($language == "cz") {
            if(isset($_GET["prices"])) {
                $prices = htmlspecialchars($_GET["prices"]);
                if($prices == "pl"){
                        $files=glob('pages/section1/cp/low/*.jpg');
                }
                else {
                        $files=glob('pages/section1/cn/low/*.jpg');
                }   
            }
            else {
                    $files=glob('pages/section1/cn/low/*.jpg');
            }
        }
        else {
                $files=glob('pages/section1/cn/low/*.jpg');
        }
    }
    else {
            $files=glob('pages/section1/dn/low/*.jpg');
    }
    break;
case 'section2':
    //the same like in section 1, path is .../section2/...
    break;
case section3:
    //the same like in section 1, path is .../section3/...
    break;
default:
    //the same like in section 1
    break;
}
else {
    //the same like in section 1
}

The path d=german, e=english, c=czech, p=prices, n=noprices

You could shorten/remove many if else statements with just doing the checks:

  $lang_code = $language[0];

There you have your first letter, you can do the same with every GET parameter. So you can use that as in:

  $files=glob('pages/section1/'.$lang_code.'p/low/*.jpg');

You can do the same for everything else.

P.s.: don't forget to sanitze any user input i.e.:

  $language=mysqli_real_escape_string($conn, $_GET['language']);

I'd probably do something like this:

<?php
    $allowedCat = ['section1', 'section2'];
    $allowedLanguage = ['pl', 'en', 'cz'];
    $allowedPrice = ['pl', '??'];

    $cat = (isset($_GET["cat"])) ? $_GET["cat"] : null;
    $language = (isset($_GET["language"])) ? $_GET["language"] : null;
    $prices = (isset($_GET["prices"])) ? $_GET["prices"] : null;

    if (!in_array($cat, $allowedCat)) throw new \Exception('Invalid `cat`');
    if (!in_array($language, $allowedLanguage)) throw new \Exception('Invalid `language` option.');
    if (!in_array($prices, $allowedPrice)) throw new \Exception('Invalid `price` option.');

    $someVar1 = ($prices === 'pl') ? 'p' : 'n';
    $someVar2 = $language[0];

    $files = glob("pages/{$cat}/{$someVar1}{$someVar2}/low/*.jpg");

Think that should be self explanatory. Translates one to one really. Was not certain on how the other price option was specified...