Php 在分页中保留GET变量

Php 在分页中保留GET变量,php,pagination,Php,Pagination,我有大约10个HTML表单中的GET变量 这些都传递到search.php,它通过分页每页返回20个结果。但是,当我单击“下一页”按钮时,它会将url重写为“?pageno=2”。它首先会忘记所有GET变量 在下一页中保存这些变量的最简单方法是什么?我不能使用会话,因为我需要用户打开尽可能多的搜索系统实例,我不能手动编辑URL,因为URL可能有2个变量或14个变量,这取决于用户选择的内容。您可以使用$\u GET数组和http\u build\u query()函数。例如 $params = $

我有大约10个HTML表单中的GET变量

这些都传递到search.php,它通过分页每页返回20个结果。但是,当我单击“下一页”按钮时,它会将url重写为“?pageno=2”。它首先会忘记所有GET变量


在下一页中保存这些变量的最简单方法是什么?我不能使用会话,因为我需要用户打开尽可能多的搜索系统实例,我不能手动编辑URL,因为URL可能有2个变量或14个变量,这取决于用户选择的内容。

您可以使用
$\u GET
数组和
http\u build\u query()
函数。例如

$params = $_GET;
$params['page'] = $page;  // Set previous/next page

$uri = $_SERVER['REQUEST_URI'];
$query = http_build_query($params);

$url = "{$uri}?{$query}";

虽然http_build_query是常用的方法,正如fubar所提到的,但我发现了一个更简单的解决方案

我使用preg_replace来更改URL中的页码

     <!-- Next li -->

<li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>">
<a href="<?php if($pageno >= $total_pages){ echo '#'; } else { 

$npage = "&pageno=". (intval($pageno) + intval(1));

if (isset($_GET['pageno']))

 {

$npg = preg_replace('~((?<=\?)pageno=\d+&?|&pageno=\d+)~i', $npage, $_SERVER['REQUEST_URI']);               

echo $npg;

 }

else 

 { 

echo $_SERVER['REQUEST_URI']. $npage; 

 }

 } ?>">Next</a>
</li>


非常感谢你的回答。但是我找到了一个更简单的解决方案,我把它作为一个答案发布出来,不用担心。也许你想在你的答案中张贴示例代码,以便将来对其他人有用。添加了它。谢谢