我正在尝试开发一个PHP类,它可以让我将查询字符串附加到url中并根据传递的变量对其进行处理。怎么办呢?
例如
www.example.com?var1=a&var2=b&var3=c
现在我想获得?var1=a&var2=b&var3=c
部分并根据变量处理它。
感谢您的回复
但我想要一种方法来获取整个查询字符串,因为我不确定将被发送到URL的变量名称,因此$ _GET方法无法正常工作。
由于
答案 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' );
}
?>
希望有所帮助 艾哈迈德