如何替换URL中的语言标识符?

问题描述:

我需要一些帮助我写了下面的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

也许是这样的:

$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

也许更简单:

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

无需正则表达式在这里。