目前我已将page1.php
输入到具有变量状态的URL栏中,并在URL中输入一个字符串,如http://example.com/page1.php?status=red
。当用户点击Enter时,它会重定向到page2.php
并生成更多变量,并在网址末尾添加另一个&status=
,如http://example.com/page2.php?status=red&varone=1&vartwo=2&status=green
我没有在URL中有2个状态变量,而是想完全删除第1个1,所以最后只留下&status=green
。
以下是标题重定向的代码:
$query = $_SERVER["QUERY_STRING"];
header("Location: page2.php" . $query . "&status=" . $currentstatus);
如果可能的话,我宁愿删除第一个?status=
,因为我确实希望在网址的最后添加&status=
答案 0 :(得分:0)
如果要从查询字符串中删除第一次出现的状态,则最好将其从以前的URL中删除。
答案 1 :(得分:0)
尝试状态是唯一参数:
$query= str_replace("status=".$_REQUEST["status"],"", $query);
或者如果还有更多:
$query= str_replace("status=".$_REQUEST["status"]."&","", $query);
答案 2 :(得分:0)
$query = $_SERVER["QUERY_STRING"];
$new_query = str_replace($_REQUEST['status'], $currentstatus, $query); // New query with $currentstatus as status value
header("Location: page2.php?" . $new_query);
答案 3 :(得分:0)
preg_replace
选项:(注意,如果参数尚未存在,这将不起作用)
$query = $_SERVER["QUERY_STRING"];
$query= preg_replace("/status=".$_REQUEST["status"]."(&)?/","status=$currentstatus$1", $query);
header("Location: page2.php" . $query);
parse_str
选项:(即使参数尚不存在,这也会有效)
parse_str($_SERVER['QUERY_STRING'], $query);
$query['status'] = $currentstatus;
header("Location: page2.php" . http_build_query($query_string));
答案 4 :(得分:0)
用户parse_str
和http_build_query
。尝试以下解决方案:
$query_string = 'status=red&varone=1&vartwo=2';
$current_status = 'newstatus';
//parse current query string
parse_str($query_string, $q_arr);
//replace new status
$q_arr['status'] = $current_status;
//generate new query string
$new_query_string = http_build_query($q_arr);
<强>输出强>
status=newstatus&varone=1&vartwo=2
答案 5 :(得分:0)
无需将查询字符串视为字符串。你将PHP中的变量作为一个很好的数组,所以使用它!
$_GET["status"] = $currentstatus;
$query = http_build_query($_GET);
header("Location: page2.php?$query");