使用查询字符串时,不会返回URI段

时间:2016-11-26 09:31:58

标签: php codeigniter url uri codeigniter-3

我正在尝试对查询返回的搜索结果进行分页。我有以下网址:

blog/search?query=post/5

我试图通过以下方式从网址获取$start=5的值:

$start = $this->uri->segment(3);

它没有返回任何东西。

删除?query=post,即blog/search/5正常工作。但我想保留查询参数并读取值。

1 个答案:

答案 0 :(得分:1)

这是因为URI中的?字符。 CodeIgniter URI解析器(以及任何其他标准URI解析器)无法识别您的想法。在?字符之后,它是所有查询字符串,而不是URI段。请参阅PHP parse_url()的输出:

parse_url('blog/search?query=post/5')
[
    "path" => "blog/search",
    "query" => "query=post/5",
]

请参阅?第一个段是blog,第二个段是search,其余的是查询字符串。

您需要以标准方式更改URI设计。例如:

blog/search/5?query=post

因此,对$this->uri->segment(3)的调用将返回您的想法。

说到CodeIgniter分页库,请参阅documentation中的reuse_query_stringpage_query_string配置。