많은 변수 즉 값이있는 변수에 따라 항목을 나열하는 페이지가 있습니다. 지금까지 너무 좋아php; querystring에서 단일 변수 값 쌍을 제거합니다.
listitems.php?color=green&size=small&cat=pants&pagenum=1&edit=1
:
listitems.php?color=green&size=small&cat=pants&pagenum=1 etc.
목록을 편집 할 수 있도록하기 위해, 나는 줄 위의 쿼리 문자열에 추가되는 매개 변수 편집 = 1이있다.
사용자가 편집을 마쳤을 때 편집 모드를 종료하는 링크가 있습니다. 이 링크는 전체 쿼리 문자열을 지정하기를 원합니다 - 사용자 선택에 따라 달라질 수 있습니다 - 편집 제외 = 1 제외.
변수가 몇 개 밖에 없지만 링크에 수동으로 나열했지만 지금은 더 많아서 프로그래밍 방식으로 편집 = 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
을 검색해야합니다.
감사합니다.
가 어떻게 $ _SERVER [ 'QUERY_STRING']에서 이런 짓을 했을까? – user1904273
'parse_url()'과'parse_str()'이 있지만 $ _GET은 항상 사용할 수 있고 채워져 있으므로 필요하지 않습니다. – Sven
$ _GET 변수 (또는 해당 문제의 모든 슈퍼 전역 변수)는 응용 프로그램의 다른 곳에서 필요할 수 있으므로 수정하지 않을 것입니다. 대신'$ edit_query = $ _GET;'와 같은 임시 변수를 생성하십시오. 그러면 슈퍼 전역에 영향을 미치지 않고 unset ($ edit_query [ 'edit']); 할 수 있습니다. – Number1SuperGuy