2011-03-03 5 views
6

Załóżmy, że mam adres URL taki jak somefile.php?sort=id&way=desc.Sposób uzyskiwania i edytowania zmiennych GET w celu tworzenia hiperłączy

Chcę napisać funkcję (lub użyć już utworzoną), która pozwoliłaby mi dodać kolejne zmienne do adresu URL i ustawić, które chcę usunąć.

Pomyślałem o czymś takim jak function editGetVar("$add","$leave"), gdzie $add byłaby tablicą z nowymi zmiennymi dodanymi do adresu URL, a $leave byłaby tablicą ze zmiennymi, które muszą pozostać w adresie URL.

Przykład:

somefile.php?sort=id&way=desc&buyer=retailer 

i chcę usunąć "kupujący" i dodać "działanie", a następnie a href będzie wyglądać następująco:

<a href="somefile.php?sort=id&way=desc&action=edit"> 

Byłbym wdzięczny za wszelkie pomysły od was.

Odpowiedz

10

Zastosowanie http_build_query:

<?php 
unset($_GET['buyer']); 
$_GET['action'] = 'edit'; 

print '<a href="somefile.php?' . http_build_query($_GET) . '">!!</a>'; 
?> 
+0

Dokładnie to, czego szukałem. Dziękuję Ci. – jwitos

+0

@jwitos: Nie ma problemu. –

+0

mimo że byłoby rozsądnie nie modyfikować zmiennej $ _GET, najpierw wykonaj kopię – relipse

0

Przykład:

$url = '?'; 
foreach($_POST as $key => $value) 
{ 
    $url .= $key . '=' . $value . '&'; 
} 

można dodawać/edytować zmienną jako:

$_GET[ 'sort' ] = 'asc'; 

Można usunąć jak:

unlink($_GET[ 'sort' ]); 

Można owinąć go do funkcji samemu;)

+2

Masz EW-spacing. –

+0

Tak, to byłoby bezwzględne, aby wpisać – lol

4

Wierzę, że możesz podziel identyfikator URI na $parts = parse_url($my_rui), zmodyfikuj wynikową tablicę i wróć do niej razem z http_build_query.

Powiązane problemy