我如何才能正确替换Url?

时间:2018-04-02 12:16:22

标签: php str-replace

我在网站上有一个带有切换语言的代码。 当网址类型为: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 = '/';
}

2 个答案:

答案 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
}

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