首页 > 解决方案 > php从url路径中删除第一个参数

问题描述

我有多语言系统,需要从 url 中删除短的默认语言环境前缀。我需要检查会话是否获取前缀:

if(Session::get('prefix')) {
    $url = urldecode(http_build_query($_GET, '', '&'));
} else {
    $url = ''; //This Line
}

echo $url;
//output is: url=fa/account/login

现在在行动 ($url) 我看到这个输出:

en/
en/account/login
en/account/dashboard

en现在,如果没有检测到这样的会话前缀,我需要从 url 路径中删除。

account/login
account/dashboard

什么是最好的方法?!

标签: php

解决方案


您可以创建所有语言的数组。然后您可以使用explode并使用正斜杠作为分隔符。

检查第一项是否在具有语言的数组中。如果是,则从$parts使用例如array_shift中删除第一项,然后使用 implode 重新组合字符串。

$langs = ["en", "fa"];
$string = "fa/account/login";
$parts = explode('/', $string);

if (in_array($parts[0], $langs)) {
    array_shift($parts);
}
echo implode('/', $parts) . PHP_EOL; //account/login

php演示


推荐阅读