문제
여기서 도움을 주셔서 감사합니다.
내가하고 싶은 일 :
remove & itemsperpage = 10 from :
http : //localhost/thi/search/filter.html? type = featured & page = 2 & itemsperpage = 10
링크를 만듭니다.
http : //localhost/thi/search/filter.html? type = featured & page = 2 & itemsperpage = 15
지금까지 내가 생각해 낸 내용은 다음과 같습니다.
<a href="<?php echo url::site(url::current()) . http_build_query($_GET) // don't know what follows ?>"
내가 사용하는 프레임 워크 기능은 다음과 같습니다.
url :: current () = 컨트롤러/액션 형식에서 현재 URL을 반환합니다.
url :: site () = 절대 URL을 반환합니다. http : // localhost/site/controller/action
그래서 http_build_query 함수의 결과 문자열에서 '& itemsperpage'를 제거해야합니다.
그러나 나는 캐릭터 인코딩 등에 어려움을 겪고 있습니다! 도와주세요!
여기 캐릭터 인코딩의 문제가 있습니다.
$needle = '&itemsperpage';
$querystring = http_build_query($_GET) . '<br/>';
// echo $querystring . '<br/>';
$pos = strpos($querystring, $needle);
$remove = substr($querystring, ((int)$pos));
echo substr(str_replace($remove, '', $querystring), 1); // returns ';'
http_build_query의 결과에서 문자열 '& itemsperpage'를 제거 할 수 없습니다.
해결책
나는 이것을 할 것이다 :
$array = $_GET;
$array['itemsperpage'] = 15;
그런 다음 코드 만 사용하지만 새로운 변수 (및 ?
):
<a href="<?php echo url::site(url::current()) . '?' . http_build_query($array)">
다른 팁
그만큼 httpquerystring 클래스에는 쿼리 문자열을 얻고 설정하고 수정하고 숯을 '번역'하는 몇 가지 방법이 있습니다.
당신은 당신이 찾고있는 효과를 제거하여 itemsperpage
.의 요소 $_GET
쿼리 문자열을 작성하기 전에 배열.
unset($_GET['itemsperpage']);
그런 다음 이미 쓴 코드 만 사용하십시오.
<a href="<?php echo url::site(url::current()) . http_build_query($_GET); ?>">
편집 : 게시물을 잘못 읽었습니다. GET 요청에서 필드 / 값 쌍을 제거하고 싶다고 생각했습니다. 원하는 값으로 값을 덮어 쓰기 만하면됩니다.
$_GET['itemsperpage'] = 15;
그런 다음 이미 쓴 코드를 사용하십시오.