How to get and disect the query string appended into a url? PHP

后端 未结 6 1655
不知归路
不知归路 2021-01-22 04:53

I am trying to develop a PHP class which would enable me to get the query string appended into a url and process it according to the variables passed. How can this be done?

相关标签:
6条回答
  • 2021-01-22 05:13

    Use $_GET

    0 讨论(0)
  • 2021-01-22 05:14

    Here is a minimalistic class. It should work, but it is not tested.

    <?php
    class URLHandler 
    {
        public $get;
    
        public function __construct( $get );
        {
            $this->get = $get;
        }
    
        public function get_var( $var )
        {
            return htmlspecialchars( $this->get[$var] );
        }
    
        public function check_var( $var, $is )
        {
            if( $this->get_var( $var ) == $is )
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    
    // Below is how you can use this class
    $URL = new URLHandler( $_GET );
    if( $URL->check_var( 'var1', 'a' ) )
    {
        echo 'yes your first var is a';
        // Here you can add a function or functions which should be loaded if var1 = a
    }
    else
    {
        echo 'No, your first var is not a, its '.$URL->get_var( 'var2' );
        // Here you can add a function or functions which should be loaded if var1 is not a
    }
    
    if( $URL->check_var( 'var2', 'a' ) )
    {
        echo 'and your second var is a';
    }
    else
    {
        echo 'your second var is not a, its '.$URL->get_var( 'var2' );
    }
    ?>
    
    0 讨论(0)
  • 2021-01-22 05:17

    http_build_query is the function you're probably looking for

    0 讨论(0)
  • 2021-01-22 05:34

    If you want access to the URL parameters as a string you can use this:

    $_SERVER['QUERY_STRING']
    

    But, I'm not sure how that would be any more useful than $_GET. You said:

    I wont be sure of the variable names

    You can iterate through the $_GET array with a foreach loop:

    foreach ($_GET as $key => $val) {
        echo $key . ": " . $val;
    }
    

    However... if you're talking about an arbitrary URL (not necessarily the one which was requested), then the above methods won't work since they obviously won't be in $_GET. Instead you can use parse_url

    $url = 'http://username:password@hostname/path?arg=value#anchor';
    
    print_r(parse_url($url));
    
    echo parse_url($url, PHP_URL_QUERY);
    

    Output:

    Array
    (
        [scheme] => http
        [host] => hostname
        [user] => username
        [pass] => password
        [path] => /path
        [query] => arg=value
        [fragment] => anchor
    )
    arg=value
    
    0 讨论(0)
  • 2021-01-22 05:37
    // Current URL: www.example.com?var1=a&var2=b&var3=c
    function handleUrl()
    {
        $var1 = $_GET['var1']; // now contains 'a'
        $var2 = $_GET['var2']; // now contains 'b'
        $var3 = $_GET['var3']; // now contains 'c'
    
        return "Querystring now contains $var1 $var2 and $var3";
    }
    

    More information at http://php.net/manual/en/reserved.variables.get.php

    0 讨论(0)
  • 2021-01-22 05:38

    If you have the parameters stored in a variable, then use parse_str. Example:

    $str = 'var1=a&var2=b&var3=c';
    parse_str($str);
    echo $var1;
    
    0 讨论(0)
提交回复
热议问题