25

こんにちは、誰でもこれで私を助けてくれませんか

parent/child/a=1&b=2$c=3

次に、そのURLに変数を追加するリンクがあります

<a href="<?php echo $_SERVER["REQUEST_URI"]."&d=test1";?>">LINK 1</a>
<a href="<?php echo $_SERVER["REQUEST_URI"]."&d=test2";?>">LINK 2</a>

リンクをクリックするたびに、変数 d to URL がこのように再生し続けます

parent/child/a=1&b=2&c=3&d=test2&d=test2&d=test2&d=test1&d=test1

$_SERVER["REQUEST_URI"] が現在の URL を取得し続けることを知っているため、その結果が得られます。$_SERVER[""] のいくつかのプロパティを試しました。私が好きなのは、d 変数の値を変更することです。どんな反応でも大歓迎です.Thanks!

4

8 に答える 8

65
$query = $_GET;
// replace parameter(s)
$query['d'] = 'new_value';
// rebuild url
$query_result = http_build_query($query);
// new link
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?<?php echo $query_result; ?>">Link</a>
于 2014-05-15T06:20:45.000 に答える
6

以下の式を試してみてください。うまくいくはずです

preg_replace("#&d=.*&#", '&d=newvalue&', $_SERVER['REQUEST_URI'])
于 2013-04-16T12:36:05.597 に答える
6

クエリパラメータの繰り返し追加を削除するには、以下を実行します

// parse the url
$pathInfo = parse_url($_SERVER['REQUEST_URI']);
$queryString = $pathInfo['query'];
// convert the query parameters to an array
parse_str($queryString, $queryArray);
// add the new query parameter into the array
$queryArray['d'] = 1;
// build the new query string
$newQueryStr = http_build_query($queryArray);

// construct new url
?>
<a href="<?php echo $pathInfo['host'].'?'.$newQueryStr;?>">LINK 1</a>
于 2013-04-16T12:23:58.957 に答える
0

ここでは、二重引用符を処理していません。それを次のコードに置き換えてから確認してください。

<a href="<?php echo 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'].'&d=test1';?>">LINK 1</a>

また、毎回どの URL が href に含まれているかを firebug で確認します。

于 2013-04-16T12:17:01.113 に答える