如果选择了网站语言,则将语言添加到数组[0],否则留空

时间:2016-02-12 08:34:48

标签: php arrays url routing multilingual

我正在使用这个简单的PHP URL路由器,我想在我的网站上实现多种语言。

我希望以下列方式发生

英文版: www.example.com/en/about-us

挪威语版本: www.example.com/no/about-us

挪威语版本: www.example.com/about-us

如何通过推送数组来完成这项工作?

每当我进入网站时,我都会检查$routes[1]是否有字符串并检查是否有类似的文件。像这样:

if((($routes[1] == "about-us") && ($routes[1] != "about.php")) && (empty($routes[2]))){
    http_response_code(200);
    require 'about_us.php
}

问题是,我如何实施以便$routes[0]决定语言而不在$routes[]值中创建偏移?

这是我使用的路由代码:

<?php
function getCurrentUri(){
    $basepath = implode('/', array_slice(explode('/', $_SERVER['SCRIPT_NAME']), 0, -1)) . '/';
    $uri = substr($_SERVER['REQUEST_URI'], strlen($basepath));
    if (strstr($uri, '?')) $uri = substr($uri, 0, strpos($uri, '?'));
    $uri = '/' . trim($uri, '/');
    return $uri;
}
$base_url = getCurrentUri();
$routes = array();
$routes = explode('/', $base_url);
foreach($routes as $route)
{
    if(trim($route) != '');
}
?>

这是我从var_dump()

获得的
array(3) { [0]=> string(0) "" [1]=> string(2) "en" [2]=> string(8) "services" }

在URL

中选择语言值的理想情况下,我需要这样做
array(2) { [0]=> string(2) "en" [1]=> string(8) "services" }

这就是我在URL中没有设置语言时所需要的

array(2) { [0]=> string(0) "" [1]=> string(8) "services" }

1 个答案:

答案 0 :(得分:0)

经过多年的测试和失败后找到了解决方案。

由于我$routes[0]一直空着,我可以使用array_splice()删除第一个元素,并重新索引数组。

这就是它的样子:

if($routes[1] === "en"){
    array_splice($routes,0,1);
}