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

Php 如果选择了网站语言,则将语言添加到数组[0],否则保留为空,php,arrays,url,routing,multilingual,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") &&a

我正在使用这个简单的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) != '');
}
?>
在URL中选择语言值的理想情况下,这就是我所需要的

array(2) { [0]=> string(2) "en" [1]=> string(8) "services" }
array(2) { [0]=> string(0) "" [1]=> string(8) "services" }
当URL中没有设置语言时,这就是我需要的

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

经过多年的测试和失败,终于找到了解决方案

因为我一直都有
$routes[0]
空,所以我可以使用
array\u splice()
删除第一个元素,并重新索引数组

这就是它看起来的样子:

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

如果URL中没有语言代码,是否可以设置默认语言?这样一来,第一个数组项就可以保证是一种语言,而不必担心以后是否会检查空字符串。是的,如果没有语言代码,我需要一个特定的文件(数据库查询),但这需要
array[0]
为空。因此,
array[0]
几乎就是语言数组。