2009-11-06 83 views
1

有没有保持一致性的$_GET

例如,如果我有一个网址 http://www.example.com/index.php?Id=5&sort=new

一个很好的方式,我想现在的那个末尾添加一个新$_GET场所以有什么办法可以创建一个函数来保持Idsort并添加我的新变量lim

所以URL现在的样子:http://www.example.com/index.php?Id=5&sort=new&lim=100

也许是这样的:

add_new_get('http://www.example.com', 'lim=100'); 

我确信我能想出的功能,但只是想知道,如果有人已经实施了这样的事情,他们想分享:D

+0

在会话不合适? – Artelius 2009-11-06 07:16:29

+0

@Artelius,不,我可以在会议上做到这一点,但是我必须控制每种会话的设置和取消设置,并且这将涉及长时间的整个reem。只是一个简单的函数,将拿起当前获取,然后添加我的新的一个将是很好的:D – 2009-11-06 07:19:06

回答

2

你总是可以做$_SERVER['REQUEST_URI'].'&yourstuff=whateves';我想你可以用一个函数包装它,如果你真的想。

上面包含了文件名前的所有内容。如果你只需要获取请求,你可以这样做:

$new_req = "?"; 
foreach ($_GET as $key=>$val){ 
    $new_req .= "&".$key."=".$val; 
} 
$new_req .= $your_new_value; 
2

你可能会发现最好使用一个类来管理你的查询字符串处理而不是写你自己的。

HTTPQueryString

这是不是非常复杂,写一个函数取一个网址,建立自己的查询字符串,但像HTTPQueryString一类,你不必担心确保你有正确的编码,是否有已经存在的字符串变量等测试

编辑

$query = new HttpQueryString(false, 'Id=5&sort=new'); 
$query->mod('lim=100'); 
echo $query->toString(); // echoes http://www.example.com/index.php?Id=5&sort=new&lim=100 
+0

Ty为解决方案,喜欢这个HTTPQueryString:D – 2009-11-06 07:31:07

+0

这是一个相当强大的解决方案。作为一种奖励,作为单例使用,所有依赖它的类都可以在同一个查询字符串上工作,根据需要添加自己的参数,而不必担心其他类使用它。显然,你需要采取措施避免碰撞。 – 2009-11-06 07:43:53

+0

作为我最后一条评论的补充,您可能想为它编写一个包装类,以防万一您可能想要更改您的GET变量管理的处理方式 – 2009-11-06 09:27:33