我想将一个变量(foo=bar
(传递给URL。
如果 URL 已经有一个变量,则应将foo
附加到当前 URL 中,并带有 &
和 foo=bar
。
但是,如果地址栏没有任何变量,则应在当前 URL 后附加 ?
和 foo=bar
那么如何检查当前 URL 中是否存在任何变量呢?
URL 中传递的变量称为GET
参数。 您可以使用 $_GET
数组使用 PHP 检索它们。
给定网址 - http://mycoolsite.com?foo=bar&stack=overflow
对$_GET
做一个print_r()
会给你——
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
}
资源
-
$_GET
- http://php.net/manual/en/reserved.variables.get.php -
in_array()
- http://php.net/manual/en/function.in-array.php
我想你想将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
& stack 后附加一个&
,否则附加一个?
并相应地&
。
正确的方法是:
$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);