2014-10-24 2 views
0

많은 변수, 즉 값이있는 변수에 따라 항목을 나열하는 페이지가 있습니다. 지금까지 너무 좋아php querystring에서 하나의 변수 값 쌍을 제거합니다.

listitems.php?color=green&size=small&cat=pants&pagenum=1&edit=1 :
목록의 편집을 활성화하려면

listitems.php?color=green&size=small&cat=pants&pagenum=1 등, 내가 줄 위의 쿼리 문자열에 추가되는 매개 변수 편집 = 1이있다.

사용자가 편집을 마쳤 으면 편집 모드를 종료하는 링크가 있습니다. 이 링크가 전체 쿼리 문자열을 지정하기를 원합니다 - 사용자 선택에 따라 달라질 수 있습니다 - edit=1을 제외하고는

변수가 몇 개 밖에 없지만 링크에 수동으로 나열했지만 지금은 더 많아서 프로그래밍 방식으로 edit=1을 제거 할 수 있기를 바랍니다.

edit = 1에 대한 검색을 수행하고 그 다음 아무 것도 대체하지 않아야합니까?

$qs = str_replace("&edit=1, "", $_SERVER['QUERY_STRING']); 
<a href='{$_SERVER['PHP_SELF']}?{$qs}'>return</a>; 

또는 가장 오류가없는 가장 확실한 방법은 무엇입니까?

참고 : 페이지에서 페이지로 이동하여 pagenum을 꺼내 다른 것으로 바꾸려면 비슷한 상황이 발생합니다. 거기에서, pagenum이 다양하기 때문에, 나는 단지 pagenum=1를 검색 할 수는 없지만 차이가 있다면 pagenum =$pagenum을 검색해야 할 것이다.

+3

사용처럼 http_build_query()를 통해 불필요한 부분을 제거, 쿼리 문자열을 구문 분석 parse_str()를 사용하고 새로운 하나를 구축 할 수 있습니다'parse_str' 당신이 정상적으로 작동 할 수있는 배열로 돌려하고 그것을 다시 쿼리 문자열로 바꾸는'http_build_query'. –

답변

7

당신이

parse_str($_SERVER['QUERY_STRING'], $params); 
unset($params['edit']); 
$new_query_string = http_build_query($params); 
관련 문제