我在网站上有一个带有切换语言的代码。
当网址类型为: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 = '/';
}
答案 0 :(得分:1)
您可以使用preg_replace
,只应替换首次出现的匹配。
$md_href = preg_replace('#/ru#', '/md', $_SERVER['REQUEST_URI'], 1);
答案 1 :(得分:0)
如果你总是保持相同的网址格式(例如域名/ [语言] /页面),那么我可以想到几个选项。
选项1 而不是替换" / ru",替换" / ru /"
选项2 将网址拆分为" /"并用所需的语言替换第二个元素。
$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
}
注意:这假定语言将始终是您网址的第二个元素。