2011-03-03 29 views
6

Giả sử tôi có URL như somefile.php?sort=id&way=desc.Cách nhận và chỉnh sửa biến GET để tạo siêu liên kết

Tôi muốn viết một hàm (hoặc sử dụng đã tạo) sẽ cho phép tôi thêm các biến tiếp theo vào URL và đặt mà tôi muốn xóa.

Tôi đã nghĩ về điều gì đó như function editGetVar("$add","$leave") trong đó $add sẽ là mảng có các biến mới để thêm vào URL và $leave sẽ là mảng có các biến phải nằm trong URL.

Ví dụ:

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

và tôi muốn xóa "người mua" và thêm "hành động", sau đó a href sẽ trông như thế này:

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

tôi sẽ đánh giá cao bất kỳ ý tưởng từ bạn.

Trả lời

10

Sử dụng http_build_query:

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

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

Chính xác những gì tôi đang tìm kiếm. Cảm ơn bạn. – jwitos

+0

@jwitos: Không sao cả. –

+0

mặc dù nó sẽ là khôn ngoan để không sửa đổi biến $ _GET, trước tiên hãy tạo một bản sao – relipse

0

Ví dụ:

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

Bạn có thể thêm/sửa một biến như:

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

Bạn có thể xóa như:

unlink($_GET[ 'sort' ]); 

Bạn có thể quấn nó vào một hàm chính mình;)

+2

Bạn có ew-khoảng cách. –

+0

vâng, điều đó sẽ vô hại khi nhập – lol

4

Tôi tin rằng bạn có thể chia nhỏ URI với $parts = parse_url($my_rui), thao tác mảng kết quả và dán nó lại với nhau bằng http_build_query.

Các vấn đề liên quan