【问题标题】:Appending query strings to URL将查询字符串附加到 URL
【发布时间】:2012-09-17 23:47:22
【问题描述】:

“用前一个 url 中已有的附件附加一个 url?” 这是最令人困惑的标题——我知道。但我想不出更好的方式来解释它。

也许下面的例子会有所帮助。

我有网址 1:http://example.com/?value=xyz&stuff=abc

如果有人点击页面内的链接,我可以传递附加值吗?

即:http://www.example.org/?value=xyz&stuff=abc

感谢和抱歉成为这样的菜鸟。

【问题讨论】:

  • 这个链接是怎么建立的?使用 JavaScript 还是 PHP?
  • 你的代码在哪里。你有没有尝试过?
  • 传递它是什么意思?你想要它在 URL 中吗?在 PHP 中,该信息位于 $_SERVER['QUERY_STRING']

标签: php javascript query-string


【解决方案1】:

您询问的这些附件是 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

然后您需要一个辅助函数,将(可选)&lt;query&gt; 附加到现有的&lt;scheme&gt;://&lt;authority&gt;&lt;path&gt; 部分。我忽略了这个例子的&lt;fragment&gt;,因为它需要在最后添加,我想留下一些东西作为练习:

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>

这个小功能将确保可以通过$_SERVERDocs获得的现有QUERY_STRING被编码为HTML输出。

【讨论】:

    【解决方案2】:

    如果链接是用 PHP 构建的,只需将原始查询字符串附加到它们:

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

    在 JavaScript 中,只需将 window.location.search 的值附加到您需要“传递”查询字符串的所有链接。

    【讨论】:

      【解决方案3】:

      您还可以使用 js/jquery 将现有查询字符串附加到页面上的每个链接:

       $(function() {
          $('a').each(function() {
            link = $(this).attr('href');
            query = window.location.search;
            if (link.indexOf('?') !== -1 && query !== '') {
              query = query.replace('?','&');
            }
            $(this).attr('href',link+query);
          });
        });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 2010-12-12
        • 2013-07-20
        • 2013-01-09
        相关资源
        最近更新 更多