1

「以前の URL に既に存在していた付属物を含む URL を追加しますか?」 それは最も紛らわしいタイトルです - 私は知っています。しかし、それを説明するためのより良い方法は思いつきません。

以下の例が参考になるかもしれません。

私は URL 1 を持っています:http://example.com/?value=xyz&stuff=abc

誰かがページ内のリンクをクリックした場合、追加された値を渡すことができますか?

すなわち:http://www.example.org/?value=xyz&stuff=abc

ありがとうございます。

4

3 に答える 3

7

あなたが尋ねるこれらの付属物は、URIの実際のいわゆるクエリ部分です。

<scheme>://<authority><path>?<query>

  foo://example.com:8042/over/there?name=ferret#nose
  \_/   \______________/\_________/ \_________/ \__/
   |           |            |            |        |
scheme     authority       path        query   fragment

出典: 3. 構文コンポーネント(RFC 3986) https://www.rfc-editor.org/rfc/rfc3986#page-16

<query>次に、(オプション)を既存の<scheme>://<authority><path>パーツに追加するヘル​​パー関数が必要です。<fragment>最後に追加する必要があり、演習として何かを残したいので、この例では無視します。

function href_append_query($href)
{
    $query = isset($_SERVER['QUERY_STRING'])
        ? '?' . $_SERVER['QUERY_STRING']
        : ''
    ;

    $query = strtr(
        $query, [
            '"' => '&quot;',
            "'" => '&#39;',
            '&' => '&amp;'
        ]
    );

    return $href . $query;
}

そしてそれは使用法です:

<a href="<?=href_append_query('http://step2.com/')?>Some link</a>

この小さな関数により、 DocsQUERY_STRINGを介して取得できる既存のファイルが HTML 出力用にエンコードされます。$_SERVER

于 2012-09-18T01:16:47.810 に答える
3

リンクが PHP で構築されている場合は、元のクエリ文字列をリンクに追加するだけです。

<a href="http://step2.com/?<?php echo $_SERVER['QUERY_STRING']; ?>">Some link</a>

window.location.searchJavaScript では、クエリ文字列を「渡す」必要があるすべてのリンクに値を追加するだけです。

于 2012-09-17T23:51:58.833 に答える