-3

我想将变量 ( foo=bar) 传递给 URL。
如果 URL 已经有一个变量,那么foo应该用&和附加到当前 URL foo=bar
但是如果地址栏没有任何变量,那么当前 URL 应该附加?foo=bar

那么如何检查当前 URL 中是否存在任何变量?

4

3 回答 3

0

在 URL 中传递的变量称为GET参数。您可以使用$_GET数组通过 PHP 检索它们。

给定网址 -http://mycoolsite.com?foo=bar&stack=overflow

做一个print_r()on$_GET会给你 -

Array ( 
  [foo] => bar 
  [stack] => overflow 
)

in_array()一旦你有了这个数组,你就可以使用这个函数来测试某个变量的存在。

if (in_array('foo',$_GET)){
  // the foo variable is was passed
}

或者,您可以简单地迭代您传递的所有参数并以这种方式检查 -

foreach($_GET AS $key=>$value){
  // $key = the name of the variable
  // $value = the value of the variable
}

资源

于 2012-07-29T10:39:32.740 回答
0

正确的方法是:

$url = 'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
    if(strpos($url, "?") !== FALSE){
            $url .= "&var=foo&stack=overflow"; 
}else{

 $url .= "?var=foo&stack=overflow"; 
}

header("Location: ".$url); 
exit();

strpos 颠倒顺序 ;) 这是一个例子:

$mystring = 'abc'; 
$findme   = 'a'; 
$pos = strpos($mystring, $findme);
于 2013-04-28T15:51:33.617 回答
0

我想您想将 var=foo 和 stack=overflow 变量传递给当前 URL。换句话说,您希望将用户重定向到当前地址 + 您的新变量。你可以试试这个:

$url = 'http'.(empty($_SERVER['HTTPS'])?'':'s').'://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
if(strpos("?", $url) !== FALSE){
    $url .= "&var=foo&stack=overflow";
}else{
    $url .= "?var=foo&stack=overflow";
}

header("Location: ".$url);
exit();

它获取当前的 URL,检查它是否已经有一个?。如果是,它会在var& 堆栈上附加 a &,否则附加 a?&相应地附加。

于 2012-07-29T11:19:09.710 回答