2015-12-02 47 views
1

可能沒有正確解釋這一點,但在這裏我們繼續。解析URL中的括號和http_build_query中的括號並將其插入到括號內

我有一個看起來像http://www.test.co.uk/?page=2&area[]=thing&area[]=thing2

多個「區域」 s時,可以添加或通過網站上的鏈接URL刪除的URL。在每次添加n「區域」時,我想刪除URL的「頁面」部分。所以它可以重置爲page1。我使用parse_url來取出這一點。

然後,我建立了一個HTTP查詢,以便它可以生成URL正確沒有 「頁」

這導致了 「面積%5B0%5D =」 「面積%5B1%5D =」,而不是「區域[] =」

當我使用urldecode,現在它顯示‘區域[0] =’和‘區域[1] =’

我需要它是‘[]’使用鏈路時,因爲以除去區域,它會檢查「[] =」 - 當它[0]不能識別它時。我如何將它保留爲「[] =」?

查看下面的代碼。

$currentURL = currentURL(); 

    $parts = parse_url($currentURL); 
    parse_str($parts['query'], $query); 
    unset($query['page']); 
    $currenturlfinal = http_build_query($query); 
urldecode($currenturlfinal); 
    $currentURL = "?" . urldecode($currenturlfinal); 

這是我迄今所做的 - 它固定在URL中的視覺部分 - 但我不認爲我已經解決了什麼,因爲我已經意識到,什麼代表「區域」和「東西'不被識別爲$ key或$ val,因爲我認爲根據下面的代碼解析或重新編碼url。所以,我仍然無法刪除使用我使用Wordpress以及可我添加了鏈接

$currentURL_with_QS2 = currentURL(); 

    $parts = parse_url($currentURL_with_QS2); 
    parse_str($parts['query'], $query); 
    unset($query['page']); 
    $currenturlfinal = http_build_query($query); 

    $currenturlfinal = preg_replace('/%5B[0-9]+%5D/simU', '[]', $currenturlfinal); 
    urldecode($currenturlfinal); 

    $currentURL_with_QS = "?" . $currenturlfinal; 


    $numQueries = count(explode('&', $_SERVER['QUERY_STRING'])); 

    $get = $_GET; 



    if (activeCat($val)) { // if this category is already set 

     $searchString = $key . '[]= ' . $val; // we build the query string to remove 

「區域」 - 也許有通過WordPress的重置分頁的方式。當然,即使在那時 - 當我在任何頁面上轉到第2頁時,它仍然將「[]」更改爲「5b0%5d」等......

編輯:這是所有引用$鍵(區域/類別)和$ val(區域或類別名稱)在鏈接本身中回顯

編輯2:它現在可以工作!
我不知道爲什麼,但我不得不使用原始代碼,並再次進行調整,現在它的工作原理就是我想要的!然而,之後我看不出兩個代碼有什麼明顯差異。奇怪...

+0

如何修正'http_build_query()'的輸出的正則表達式替換?或者也許你可能更喜歡爲該功能編寫一個替代方案。 – Calimero

回答

0

據我所知,沒有內置的方法來做到這一點。 你可以嘗試使用:

$currenturlfinal = http_build_query($query); 

$query的查詢字符串的一部分W/O區域的參數,然後:

foreach ($areas as $area) { 
    $currenturlfinal .= '&area[]='.$area; 
} 

UPD:

$query = preg_replace('/%5B[0-9]+%5D/simU', '%5B%5D', $query); 

剛:
你可以與嘗試請在http_build_query之後撥打電話。

+0

這不會起作用,因爲我也有&category [] = - 這些在腳本中被引用爲$ key(用於區域和類別)和$ val(一系列區域/類別之一,例如「書籍」) –

+0

您能否提供一個例子? –

+0

查看編輯 - 我不確定解析URL是否是正確的解決方案,因爲它刪除了對$ key和$ var的引用,這對於它所顯示的函數是必不可少的...... –