2012-12-15 4 views
0

URL에서 특정 검색어를 삭제하는 데 문제가 있습니다. 나머지 쿼리는 유지하면서 마지막 쿼리는 단순히 덤프합니다. 문제는 쿼리 문자열이 매번 다른 값을 가질 수 있으므로이 작업을 수행하는 방법을 모릅니다.REQUEST_URI (PHP)에서 간단한 질의 문자열을 제거하십시오.

예를 들어 내 사이트 URL이 될 수 있습니다 내가 원하는 무엇

http://sitename.com/index.php?Cat=Bus&Origin=UK 

는 고양이를 유지 UK

그래서

= 버스 및 제거가 원산지 =입니다 내가 독일 I 원점을 변경하려고하면

echo '<a href="'.$_SERVER['REQUEST_URI'].'&Origin=Germany">Germany</a>'; 

을 그래서 그것은에있는 페이지 취합니다 : 쓰기

http://sitename.com/index.php?Cat=Bus&Origin=UK 

Request_URI를 사용 중입니다. 그 다음 그것을 벗기고 싶습니다 & Origin = * 그런 다음 그것을 문자열로 전달하고 끝에 새로운 원점을 추가하십시오.

나는 그림 :

$theURI = $_SERVER['REQUEST_URI']; 

하지만 어떻게 처음부터 끝까지 이동하는 아무 생각이 없습니다.

$amended = $theURI - '&Origin=*' 

하고 난 그냥 PHP에서 해당 $ 수정 기능을 표현하는 방법을 모른다

echo '<a href="'.$amended.'&Origin=Germany">Germany</a>'; 

와 끝까지.

누군가 도움이 될까요? 국가 간 정렬에 사용됩니다

+0

저는 str_replace를 사용했지만, Origin은 매번 다를 것입니다. 항상 영국이되지는 않을 것입니다. 그것은 다른 나라의 전체 호스트 일 수 있습니다. – user1906005

+2

'echo 'Germany'; – Dale

+0

Ah 추가하는 것을 잊어 버렸습니다. 쿼리를 재사용 했으므로 subCat도있을 수 있습니다. 그래서 내가 request_uri를 사용하고 있습니다. 각 페이지와 마찬가지로 국가 별 정렬 기능입니다. 따라서 메인 카테고리에서 쿼리가 작동합니다. 그러나 URL이 'http : //sitename.com/index.php? Cat = Bus & SubCat = Whatever & Origin = UK'이면 쿼리가 작동하지 않습니다. 그래서 If SubCat 정의 된 문 및 다른 모든 if 문을 추가해야 할 것입니다. 그것은 꽤 혼란스러워지기 시작합니다. – user1906005

답변

1

도움이되기를 바랍니다 그리고 그들은, 당신은 데일의 코멘트와 함께 할 수있는 많은 수 없습니다 : 당신이없는 str_replace를 사용할 수없는 경우

echo '<a href="/index.php?Cat=' . $_GET['Cat'] . '&Origin=Germany">Germany</a>'; 

을 :

$url = $_SERVER['REQUEST_URI']; 
$url = str_replace("origin=" . $_GET["origin"], "", $url); 
$url = preg_replace("#&+#", "&", $url); 
... 
echo "<a href='" . $url . "&origin=Germany"'>Germany</a>"; 
+0

아,이게 내가 쫓아 다니는 것 같아! 사실 나는 그것을 테스트했습니다. 감사합니다. 정확히 무엇이 붙은 지 - 나는 $ _GET을 str_replace 나 preg_replace와 함께 사용하는 것을 생각하지 않았습니다. 감사합니다! '$ url = $ _SERVER [ 'REQUEST_URI']; \t \t \t \t $ url = str_replace ("Origin =". $ _GET [ "Origin"], "", $ url); \t \t \t \t $ url = preg_replace ("# & + #", "&", $ url); \t \t \t \t echo '국가 별 정렬 :'; \t \t \t \t echo '
'; \t \t \t \t echo 'United Kingdom'; \t \t \t \t echo '
'; \t \t \t \t 에코 'Germany'; 내가 preg_replace이다에 대해 잘 모릅니다으로'가 – user1906005

+0

아, 가 당신이이 일을 말해 주시겠습니까? "# & + #" – user1906005

+0

정규 표현식입니다. 나는 그들에 대해서도 많이 알지 못하지만,이 하나는 하나 이상의 '&'가 있는지 확인하고 하나만 '&'로 대체합니다. 원점이 end 파라미터가 아닌 경우에 유용합니다. 솔직히 말해서 필자가 필요하거나 &가'str_replace'에서도 필요할 지 모르겠지만 그 일을해야한다 :) –

1

발신 URL (정적 URL 대 동적 URL)에 따라 다르지만 이는 초저가 $_GET의 간단한 조작입니다.

$url = $_SERVER['REQUEST_URI']; //edit: I usually use $_SERVER['PHP_SELF'], so try this if REQUEST_URI fails 
$get_param = $value; //$value can be germany, england, poland, etc etc 
$url .= "&Origin=".$get_param; 
echo "<a href='".$url."'>$get_param</a>"; 

난 당신이 정확한 변수를 알고 있다면이

+0

그 문제는 매번 $ 값을 정의해야한다는 것입니다. 나라를 항목별로 정렬 할 수있는 곳을 클릭하면됩니다. 그래서 두 가지 옵션을 말할 수 있습니다 : 'if (! $ _ GET [ "Origin"]) { \t \t \t echo '국가 별 정렬 :'; \t \t \t echo '
'; \t \t \t echo 'United Kingdom'; \t \t \t echo '
'; \t \t \t echo 'Germany'; \t \t \t} 그러나 이미 설정 한 원점이있는 경우 해당 원점을 변경하고 싶습니다. 하지만 나는 & subCat 정규 & 고양이 ID 후 문제가 생겼어 ive있어. – user1906005

+0

그것은 사용자 입력 또는 하드 코드 여부에 관계없이 어딘가에 정의해야 할거야. 귀하의 질문에 정렬에 사용되는 언급 편집을 넣어 줄, 그 도움이 될 수도 있습니다. 그래도 내 대답을 다시 생각할 게요 –

관련 문제