【问题标题】:pass parameters to pagination url将参数传递给分页 url
【发布时间】:2013-01-04 03:23:10
【问题描述】:

我想将大约 15 个参数传递给 url 分页:

例如我有:

$input = $_GET['input'];
$categories = $_GET['category'];
$state = $_GET['state'];
$zipcode = $_GET['zipcode'];

我可以这样做并且工作正常:

 $paginate.= "<a href='$targetpage?page=$prev&input=".$_GET['input']."& 
 category=".$_GET['category']."&state=".$_GET['state']."& 
 zipcode=".$GET['zipcode']."'>Previous</a>";

但是我还有很多参数要传递。有人可以告诉我它是如何使用数组或其他更好的方法完成的吗?

谢谢

【问题讨论】:

  • 在处理 GET 请求时,您所拥有的似乎是最简单和最标准的方式。为什么要混淆它?

标签: php url pdo


【解决方案1】:

你可以使用这个功能:
http_build_query

php.net 示例:

<?php
$data = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');

echo http_build_query($data) . "\n";
echo http_build_query($data, '', '&amp;');

?>

输出:

foo=bar&baz=boom&cow=milk&php=hypertext+processor
foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor

【讨论】:

    【解决方案2】:

    PHP 中有一个将数组转换为 URL 查询的函数,它被称为:

    用法很简单:

    $data = array('foo'=>'bar',
                  'baz'=>'boom',
                  'cow'=>'milk',
                  'php'=>'hypertext processor');
    
    echo http_build_query($data) . "\n";
    echo http_build_query($data, '', '&amp;');
    

    上面的例子会输出:

    foo=bar&baz=boom&cow=milk&php=hypertext+processor
    foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor
    

    我推荐the manual page just linked 了解更多信息。

    如果您正在寻找面向对象的东西,Net_URL2 Pear Package 很有用。

    它还允许有条件地更改一些参数,这通常对分页非常有用,请参阅my answer to "keeping url parameters during pagination" 的两个示例,一个基于 Array/PHP 标准扩展,另一个用于Net_URL2

    【讨论】:

      【解决方案3】:

      假设所有 $_GET 键与 URL 中的参数名称相同,您可以这样做:

      $url = $targetpage . '?page=' . $prev . '&';
      
      foreach ($_GET as $k => $v) {
          $url .= $k . '=' . $v . '&';
      }
       $paginate.= "<a href='$url'>Previous</a>";
      

      .. 或者你可以只使用 PHP 的 inbuilt function http_build_query()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多