【问题标题】:Link with GET parameter与 GET 参数链接
【发布时间】:2012-03-08 23:15:17
【问题描述】:

您可以在链接中附加获取参数。如果我想向已有的 url 添加一个新的 get 参数。

示例: 旧:example.php?hi=hello 新:example.php?hi=hello&hello=hi

有没有其他方法可以这样做:

echo '<a href="'. $_SERVER['REQUEST_URI'].'&hello=hi">';

【问题讨论】:

  • echo '&lt;a href="'.$_SERVER['REQUEST_URI'].'&amp;hello=hi"&gt;';
  • 感谢您如此迅速地回答,但我的意思是除了使用 $_SERVER['REQUEST_URI'] 之外是否还有其他方法。
  • 更简单是什么意思?这还不够简单吗?
  • 确实很简单,但是有没有其他方法或者这是唯一的方法?
  • 您的主要问题是问号。如果您的传入 URL 是 example.php(没有查询字符串)并且您的结果 URL 是 example.php&amp;hello=hi,那么您将遇到问题。

标签: php url hyperlink


【解决方案1】:

需要注意的是检测问号是否存在。如果没有,您需要添加它。一种快速而肮脏的方式是strpos:

if (strpos($_SERVER['REQUEST_URI'], '?') === false) {
    $qsPart = '?';
} else {
    $qsPart = '&';
}

$oldURL = $_SERVER['REQUEST_URI'];
echo '<a href="' . $oldURL . $qsPart . 'hello=hi">';

更强大的方法是分解REQUEST_URI,并在使用parse_urlhttp_build_query 进行检查后重建它,但这可能超出了范围。

【讨论】:

    【解决方案2】:
    <?php
    $params = array(
        'hello' => 'hi',
        'hi' => 'hello',
    );
    $url = $_SERVER['REQUEST_URI'] . '?' . http_build_query($params);
    ?>
    <a href="<?php echo htmlentities($url); ?>">Link to tuther page</a>
    

    当您链接到同一页面时,您无需提供$_SERVER['REQUEST_URI'],您只需提供类似这样的参数即可生成相对 URL:

    <a href="?<?php echo htmlentities(http_build_query($params)); ?>">
        Link to tuther page</a>
    

    【讨论】:

      【解决方案3】:
      echo '<a href="'.$_SERVER['REQUEST_URI'].'&hello=hi">';
      

      或者你可以创建一个函数来接受你想要的任意数量的参数。

      <?php
      $urlArray = array('value'=>'key', 'hi' => 'hello');
      $url ='example.php';
      function urlGenerator($url,$urlArray){
      foreach ($urlArray as $key => $value) {
          if($i==0){
          $url .= '?'.$key.'='.$value;
          }else{
          $url .= '&'.$key.'='.$value;    
          }
          $i++;
      }
      return $url;
      }
      echo urlGenerator($url,$urlArray);
      //Output: example.php?value=key&hi=hello
      

      【讨论】:

      • 我没有意识到你只是想访问当前的 URL。无论如何,我都会留下它,以防它有任何用处。否则请参阅@webbiedave 评论。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 2011-01-29
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多