2013-11-21 49 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

是的,這只是爲了說明,仔細看看鏈接嘿嘿 –

回答

1

str_replace

<?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

我用稍微修改的例子 -

<?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>