2011-03-28 51 views
0

我需要一些幫助我寫了下面的preg_replace。劇本的想法是讓從域名語言名稱:如何替換URL中的語言標識符?

如果我有一個

http://www.domainname.com/nl/this/is/a/test/index.asp 

我想剝離(nl)部分從域名。國聯是語言變量,因此它可能是:

以上域表示語言目錄...

<?php 
$sitename = "http://" .$_SERVER["SERVER_NAME"]; 
$pagename = $_SERVER["PHP_SELF"]."this/is/a/test"; 
$language = "\/..\/"; 
$language1 = preg_replace("/$language/", "$1", "$pagename"); 
?> 
  • 我只使用腳本,我知道會有一個語言目錄。
  • 上面的腳本也從url中刪除了這個/ a/test /(是)。 (告訴我來說,劇本是貪婪的。

什麼是抓住從URL中語言的最佳方法是什麼?

可有人請我提供一些指導做好。

感謝

這是我想出了用以下的建議,該腳本:

<?php 
$mainurl = "http://" .$_SERVER["SERVER_NAME"]; 
$fullpagename = $_SERVER["PHP_SELF"]; 
$mainlanguage = preg_replace('%^/(\w+?)/.*$%', '$1', $_SERVER["REQUEST_URI"]); 
$strippedpagename = preg_replace("/$mainlanguage\//", '$1', $_SERVER["REQUEST_URI"]); 
?> 
<?php echo "Full URL: ".$mainurl ?><br> 
<?php echo "Full Page Name: ".$fullpagename ?><br> 
<?php echo "Language: ".$mainlanguage ?><br> 
<?php echo "Page Name No Language: ".$strippedpagename ?><br> 

正是我需要的,或者是重新更優雅的方式?

+0

也許我錯了,但它看起來像你真的只是用$語言取代$ _SERVER ['PHP_SELF'] ...如果是這樣的話,爲什麼不在你的$ pagename任務中使用$ language來開始用? – 2011-03-28 17:51:00

+0

如何爲所有不同的語言定義語言,這樣我有一個文件,爲我找到語言? – 2011-03-28 17:57:51

+0

好的等待我現在明白了,對不起,誤解了 – 2011-03-28 18:02:27

回答

2

也許是這樣的:

$language = preg_replace('%^/(\w+?)/.*$%', '$1', $_SERVER["REQUEST_URI"]) 
+0

正是我所要找的感謝! – 2011-03-28 17:52:29

+0

只是再次檢查它,即使文件夾長度超過2個字符,它仍在替換文件夾,是否有一種方法可以將其設置爲僅在第一個/ da/ – 2011-03-28 18:31:25

+1

時刪除2個字符當然,用上面表達式中的\ w {2}替換'\ w +?'。 – svoop 2011-03-28 18:36:15

0

也許更簡單:

$language = reset(explode('/', substr($_SERVER["REQUEST_URI"],1))); 

無需正則表達式在這裏。