2013-11-21 3 views
2

$ _SERVER [ 'REQUEST_URI']이 (가) 출력 한 첫 번째 폴더를 제거하고 싶습니다.

// I use it as language switcher in my website, here's how it works: 

<?php $currenturl=$_SERVER['REQUEST_URI']; ?> 

<a href="https://mysite.com/<?php echo $currenturl ?>">United States</a> 
<a href="https://mysite.com/ca<?php echo $currenturl ?>">Canada</a> 
<a href="https://mysite.com/br<?php echo $currenturl ?>">Brasil</a> 

문제는 캐나다에서 예를 들어,이 출력됩니다 :

https://mysite.com/ca/ca/mypage

그것은

https://mysite.com/ca/mypage

+0

내가 볼 수없는 아웃 링크를 클릭 할 때 단순히 – praveen

+0

를 연결할 수 없습니다 말한다 넣어 그래, 단지 설명하는거야, hehe 링크를 자세히 살펴 보자. –

답변

1

만들기 사용 str_replace

,691이어야한다
<?php 

$currenturl=$_SERVER['REQUEST_URI']; 
$currenturl=str_replace('/ca','',$currenturl); // I have added it here 

?> 

<a href="https://mysite.com/<?php echo $currenturl ?>">United States</a> 
<a href="https://mysite.com/ca<?php echo $currenturl ?>">Canada</a> 
<a href="https://mysite.com/br<?php echo $currenturl ?>">Brasil</a> 
+1

그건 정확히 내가 필요로하는 것이지만, 너무 간단하다! (6 분 안에 답변 수락) –

1

글쎄, 첫 번째 폴더를 제거하는 대신 경로의 파일 이름을 얻으려고한다고 생각합니다. 다음 코드 시도 :

$currenturl=basename($_SERVER['REQUEST_URI']); 
0

$_SERVER['REQUEST_URI']는 PHP에 의해 제공됩니다, 그리고 당신이 단순히 htaccess로 파일에서 제거 할 수있는 일이 아니다. 당신은 PHP에서 제거해야합니다

<?php $currenturl=preg_replace('#(/[a-z]{2})?(/.*)#','${2}',$_SERVER['REQUEST_URI']); ?> 
0

내가 약간 수정 사용하십시오 예를 쉔카 Damodaran에서 -

<?php 
    $currenturl = $_SERVER['REQUEST_URI']; 
    $languge_folder = array('/en', '/ru', '/ua'); 
    $currenturl_en = str_replace($languge_folder,'',$currenturl); 
    $currenturl_ru = str_replace($languge_folder,'',$currenturl); 
    $currenturl_ua = str_replace($languge_folder,'',$currenturl); 
?> 
      <select id="select-language" onchange="window.location.href=this.value"> 
      <option value="/ua/<?php echo $currenturl_ua; ?>" selected="selected">Ukrainian</option> 
      <option value="/ru/<?php echo $currenturl_ru; ?>" >Russian</option> 
      <option value="/en/<?php echo $currenturl_en; ?>" >English</option> 
      </select>