如何正确替换 Url?

How I can do replace correctly for Url?

我在网站上有一个可以切换语言的代码。 当 url 类型为: site.com/ru/rumanya-test
我的代码将 rumanya-test 替换为 mdmanya-test。如果不在语言上添加斜杠,我该如何防止这种情况发生?

我的代码:

if ($lang == 'ru') {
   $ru_href = 'javascript:void(0);';
   $en_href = str_replace("/ru", '/en', $_SERVER['REQUEST_URI']);
   $md_href = str_replace("/ru", '/md', $_SERVER['REQUEST_URI']);
   $logo_href = '/ru/';
} elseif ($lang == 'en') {
   $ru_href = str_replace("/en", '/ru', $_SERVER['REQUEST_URI']);
   $en_href = 'javascript:void(0);';
   $md_href = str_replace("/en", '/md', $_SERVER['REQUEST_URI']);
   $logo_href = '/en/';
} else {
   $ru_href = str_replace("/md", '', $_SERVER['REQUEST_URI']);
   $ru_href = '/ru' . $ru_href;
   $en_href = str_replace("/md", '', $_SERVER['REQUEST_URI']);
   $en_href = '/en' . $ru_href;
   $md_href = 'javascript:void(0);';
   $logo_href = '/';
}

如果您总是要保持相同的 url 格式(例如域/[语言]/页面),那么我可以想到几个选项。

选项 1 不要替换“/ru”,而是替换“/ru/”

选项 2 用“/”拆分 url 并将第二个元素替换为所需的语言。

$url = rtrim("site.com/ru/rumanya-test", '/') . '/'; // Adds a slash at the end of the url if it doesn't already exist
$parts = explode("/", $url);

// If the URL contains language information
if(count($parts > 1)) {
    $newURL = $parts[0]."/en/".$parts[2];
}

// If it doesn't contain language information (ie. on the root domain)
else {
    // Your logic here
}

注意:这假定语言将始终是您 url 的第二个元素。

您可以使用 preg_replace,只应替换第一次出现的匹配项。

$md_href = preg_replace('#/ru#', '/md',  $_SERVER['REQUEST_URI'], 1);