2013-07-20 222 views
1

我有多個頁面的分頁功能。獲取分頁的當前URL

而不是在函數中設置URL。例如mypaginatefunction($current_page_number, 'forum/?action=showthread&id=$threadid, $per_page我只是想讓PHP弄明白。

目前我使用:

$link = strtok($_SERVER['REQUEST_URI'],'?').'?'.http_build_query($_GET); 
<a href=\"$link&page=$page_number\">$page_number</a> 

但是,這並不工作這麼好。它會保留以前的$ _GET太

例如可以說我對http://xxx/forum/?action=showthread&id=181

我按2頁http://xxx/forum/?action=showthread&id=181&page=2

上,但然後如果我按3頁就變成:http://mysite/forum/?action=showthread&id=181&page=2&page=3

我只想要&page=3

我該怎麼辦?

回答

0
$link = strtok($_SERVER['REQUEST_URI'],'?').'?page='.$_GET['page']); 

如果你想action部分你可以做到這一點:

$link = strtok($_SERVER['REQUEST_URI'],'?').'?action=showthread&page='.$_GET['page']); 
+0

剛剛更新。我在原始答案中有錯誤。 –

2
$queryParams = $_GET; 
$queryParams['page'] = $page_number; 
$link = strtok($_SERVER['REQUEST_URI'],'?').'?'.http_build_query($queryParams); 
+0

相同的結果.... – Kaka

+0

應該不可能在您的鏈接中獲得多個&page =實例,如果您像這樣構建它。我可以看到你當前的代碼和結果嗎? – EJTH

0

你的方法是不是最好的,但對於一個臨時解決方案,您可以使用此:

$url = 'http://xxx/forum/?action=showthread&id=181&page=2'; 
$new_url = preg_replace('/page=[\d+]/', 'page=3', $url); 
+0

然後什麼是好方法? – Kaka