我正在使用这个简单的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" }
答案 0 :(得分:0)
经过多年的测试和失败后找到了解决方案。
由于我$routes[0]
一直空着,我可以使用array_splice()
删除第一个元素,并重新索引数组。
这就是它的样子:
if($routes[1] === "en"){
array_splice($routes,0,1);
}