我正在使用一个多语言脚本来改变语言。现在,当我使用默认语言(英语)时,我在更改语言时遇到了麻烦
该站点如下所示:
example.com ( Main directory)
example.com/fr/
example.com/es/ 当我在example.com/fr/blabla/index并想转到example.com/es/blabla/index时,它工作得很好。
但是当我在example.com/blabla/index时,我想转到example.com/fr/blabla/index。我将重定向到example.com/fr/index
我使用的是:
<?php
function switchLanguage($lang) {
$u = explode('/', $_SERVER['REQUEST_URI']);
$u[1] = $lang;
return implode('/', $u);
}
?>所以我没有重定向到正确路径是合乎逻辑的,因为没有目录/eng。
我在想,有没有可能使用数组重写url?如下所示:
<?php
function switchLanguage($lang)
$array1 = array(' ', $_SERVER['REQUEST_URI']);
$array2 = array('$lang', ' ');
$newArray = array_combine($array1, $array2);
foreach ($newArray as $key ) {
echo "$key $value";
}
?>但是,我如何才能获得url中的值,或者我哪里错了。
不能使用数据库或.ini和geoip缓存
发布于 2012-05-18 18:15:19
function switchLanguage($lang, $defaultLang = "eng") {
if($lang == $defaultLang) {
$lang = "";
}
$u = explode('/', $_SERVER['REQUEST_URI']);
$u[1] = $lang;
return implode('/', $u);
}如果我正确理解了您的问题,这可能会起作用。
发布于 2012-05-18 18:19:15
您正在通过执行$u[1] = $lang来覆盖第一个目录。您需要重新构建数组,将语言推入正确的位置,而不是通过覆盖可能已经存在的内容(例如目录)
编辑:使用array_splice添加语言部分:
<?php
function switchLanguage($lang) {
$u = explode('/', $_SERVER['REQUEST_URI']);
$u = array_splice($u,1,0,$lang);
return implode('/', $u);
}
?>https://stackoverflow.com/questions/10650376
复制相似问题