2016-04-22 7 views
1

現在、私はpage1.phpをURLバーに入力しています。ステータスは変数で、URLはhttp://example.com/page1.php?status=redです。ユーザーがクリックを入力すると、それはpage2.phpにリダイレクトし、より多くの変数を生成し、代わりにURLに2つの状態変数を持つこのhttp://example.com/page2.php?status=red&varone=1&vartwo=2&status=greenクエリの変数の値を置き換えます

のようなURLの末尾に別の&status=を追加し、私は完全に第一1を削除したいです最後に&status=greenが残っています。ここで

は、ヘッダー、リダイレクトのための私が持っているコードは次のとおりです。

$query = $_SERVER["QUERY_STRING"]; 
header("Location: page2.php" . $query . "&status=" . $currentstatus); 

可能な場合ならば、私は、URL

+2

[PHPクエリ文字列のparamを変更/追加&URLを取得](http://stackoverflow.com/questions/5892817/php-add-modify-a-query-string-param-の可能性のある重複get-the-url) – trex005

答えて

0

の一番最後に&status=したくないので、私はむしろ、最初?status=を削除しますクエリ文字列からステータスの最初の出現を削除し、以前のURLから削除する方がよいでしょう。

0

ステータスは唯一のパラメータであれば試してみてください。

$query= str_replace("status=".$_REQUEST["status"],"", $query); 

以上が、次のされている場合:

$query= str_replace("status=".$_REQUEST["status"]."&","", $query); 
+0

ステータスが唯一のパラメータであったため、この例では機能しませんでした。あなたはそれを説明するために正規表現を使うことができます。 – trex005

+0

@あなたが正しいです。私は私の答えを編集しました。 –

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); 
+0

ステータス '文字列を含む別の文字列があった場合、これは機能しません。 – trex005

+0

一般に、すべてのステータスパラメータを置き換えます。これは、オペアンプの現在の要件とパラメータに基づいてうまく動作します。 –

0

preg_replaceオプション:(注パラメータdoesnの場合、これは動作しません。まだ存在しません)

$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)); 
0

ユーザーparse_strhttp_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 
0

文字列のようなクエリ文字列を処理する必要はありません。あなたは素晴らしい配列としてPHPで変数を取得しますので、それを使用してください!

$_GET["status"] = $currentstatus; 
$query = http_build_query($_GET); 
header("Location: page2.php?$query");