如何正确替换 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);
我在网站上有一个可以切换语言的代码。
当 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);