0

我的帖子

个人中心

设置

  发新话题

超级链接中多重get参数的拼装问题+thinkphp解决方案


有这样的情况:当我们在同一个页面需要传递不同的get参数,带或获取不同的结果时,页面中可能会存在多个带get参数的超链接,如:
echo '
         <br/>
         <ahref="?a=1">get1</a><br />
         <ahref="?b=2">get2</a><br />
         <ahref="?c=3">get3</a><br />
         <ahref="?d=4">get4</a><br />
';
如果点击了a链接,再点击b链接,那么a链接就消失了,而我们希望的是点击b链接是,a参数同样保留:
?a=1&b=2


求人不如求己,网上虽然搜索得到方法,但不容易找到简单的解决方案,还要花时间去阅读别人的代码,真心不高兴!

于是,自己摸索了下解决办法。最简单的办法,就是使用$_SERVER["QUERY_STRING"] 来获取:
echo '
         <br/>
         <ahref="?a=1&'.$_SERVER["QUERY_STRING"].'">get1</a><br/>
         <ahref="?b=2&'.$_SERVER["QUERY_STRING"].'">get2</a><br/>
         <ahref="?c=3&'.$_SERVER["QUERY_STRING"].'">get3</a><br/>
         <ahref="?d=4&'.$_SERVER["QUERY_STRING"].'">get4</a><br/>
';
但这样会遇到麻烦,当我们重复点击a参数的连接时,URL中会大量重复地出现a参数:
         ?a=1&a=1&a=1& a=1& a=1& a=1&
显然,这样太不优雅了!

那么我只能写个函数来重组get参数:
function getstr(){
         $temp= array();
         foreach($_GETas $k=>$v){
                   $temp[]= $k . '=' . $v;
         }
         return implode('&',$temp);
}

在超级连接中,我们就这样改造下即可:
$get_str = getstr();
echo '
         <br/>
         <ahref="?a=1&'.$get_str .'">get1</a><br />
         <ahref="?b=2&'.$get_str .'">get2</a><br />
         <ahref="?c=3&'.$get_str .'">get3</a><br />
         <ahref="?d=4&'.$get_str .'">get4</a><br />
';

这样,基本就达到了我们的目的了哈!

在此,我再分享个thinkphp中的解决办法,其自带的U函数就能轻松地解决,无需自己写函数哈!见:
        U(‘?a=1’,I(‘get.’));

懂得thinkphp的应该能看懂哈,这个我也是在它的分页类中学习到的哈,有兴趣的朋友,去阅读下/ ThinkPHP/Library/Think/Page.class.php吧!


本帖最近评分记录
  • 咖啡 无忧币 +20 好内容知得分享~ 2017-12-19 11:41



本帖最后由 七彩极 于 2017-12-18 22:08 编辑
好内容值得大家分享~



‹‹ 上一贴:【教程经验】悬赏:函数调用的性能研究讨论 ...   |   下一贴:【教程经验】程序员为什么加班太多?有可能是代码写得烂 ... ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com