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

Add language to array[0] if website language is selected, otherwise leave empty

我正在使用这个简单的 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" }

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

因为我 $routes[0] 一直是空的,所以我可以使用 array_splice() 删除第一个元素,并重新索引数组。

这是它的样子:

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