Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取并分离附加到url中的查询字符串?PHP_Php - Fatal编程技术网

如何获取并分离附加到url中的查询字符串?PHP

如何获取并分离附加到url中的查询字符串?PHP,php,Php,我正在尝试开发一个PHP类,使我能够将查询字符串附加到url中,并根据传递的变量对其进行处理。如何做到这一点 乙二醇 现在我想获取?var1=a&var2=b&var3=c部分,并基于变量对其进行处理 谢谢你的回复 但是我需要一种方法来获取整个查询字符串,因为我无法确定将发送到URL的变量名,因此$\u get方法无法正常工作 谢谢 更多信息请访问 使用如果参数存储在变量中,则使用。例如: $str = 'var1=a&var2=b&var3=c'; parse_str($str

我正在尝试开发一个PHP类,使我能够将查询字符串附加到url中,并根据传递的变量对其进行处理。如何做到这一点

乙二醇

现在我想获取
?var1=a&var2=b&var3=c
部分,并基于变量对其进行处理

谢谢你的回复

但是我需要一种方法来获取整个查询字符串,因为我无法确定将发送到URL的变量名,因此$\u get方法无法正常工作

谢谢

更多信息请访问

使用

如果参数存储在变量中,则使用。例如:

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

是您可能正在寻找的函数

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

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

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

$_SERVER['QUERY_STRING']
但是,我不确定这会比
$\u GET
更有用。你说:

我不能确定变量名

您可以使用
foreach
循环遍历
$\u GET
数组:

foreach ($_GET as $key => $val) {
    echo $key . ": " . $val;
}
然而。。。如果您谈论的是任意URL(不一定是请求的URL),那么上述方法将不起作用,因为它们显然不在
$\u GET
中。相反,你可以使用

输出:

Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
arg=value

你说的是用来访问网站的URL,还是字符串中包含的URL(例如数据库)?我说的是用来访问网站的URL。但是不要忘记htmlspecialchars()$\u得到,因为否则人们可以使用xss“黑客”你的网站,或者用它做坏事:)+1表示所展示的精彩种类。这应该可以满足OP的所有要求。我忘记了上面提到的几个选项。非常感谢您的回答。
foreach ($_GET as $key => $val) {
    echo $key . ": " . $val;
}
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_QUERY);
Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
arg=value