如何获取和剖析附加到URL的查询字符串? PHP

时间:2010-06-03 10:50:43

标签: php

我正在尝试开发一个PHP类,它可以让我将查询字符串附加到url中并根据传递的变量对其进行处理。怎么办呢?

例如

www.example.com?var1=a&var2=b&var3=c

现在我想获得?var1=a&var2=b&var3=c部分并根据变量处理它。

感谢您的回复

但我想要一种方法来获取整个查询字符串,因为我不确定将被发送到URL的变量名称,因此$ _GET方法无法正常工作。

由于

6 个答案:

答案 0 :(得分:4)

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

更多信息,请访问 http://php.net/manual/en/reserved.variables.get.php

答案 1 :(得分:3)

如果您希望以字符串形式访问URL参数,可以使用:

$_SERVER['QUERY_STRING']

但是,我不确定这比$_GET更有用。你说:

  

我不确定变量名称

您可以使用$_GET循环遍历foreach数组:

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

但是......如果你在谈论一个任意 URL(不一定是被请求的那个),那么上面的方法将无法工作,因为它们显然不会在{ {1}}。相反,您可以使用parse_url

$_GET

输出:

$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_QUERY);

答案 2 :(得分:1)

使用$_GET

答案 3 :(得分:0)

如果您将参数存储在变量中,请使用parse_str。例如:

$str = 'var1=a&var2=b&var3=c';
parse_str($str);
echo $var1;

答案 4 :(得分:0)

http_build_query是您可能正在寻找的功能

答案 5 :(得分:0)

这是一个简约的类,应该可以工作,但没有经过测试。

<?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' );
}
?>

希望有所帮助 艾哈迈德