我正在开发一个语言切换器,我使用PHP将URL从一种语言更改为另一种语言。 我希望语言切换按钮(即链接)在页面加载时更改其href属性。 下面是我的代码:
<?php
$actual_link = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
if (strpos($actual_link, 'fr') !== false) {
$actual_lang = 'fr';
$new_link = str_replace('/fr/','/en/',$actual_link);
}
else {
$actual_lang = 'en';
$new_link = str_replace('/en/','/fr/',$actual_link);
}
echo "
<div class='top-bar'>
<a class='language-selector' id='language-switch-btn' href='#'>Language</a>
</div>
<script type='text/javascript'>
document.getElementById('language-switch-btn').href = '".$new_link."';
</script>
";
?>
但是,我的问题是JS代码将$NEW_LINK连接到$ACTUAL_LINK,从而产生如下href属性:localhost/website.com/fr/localhost/website.com/en/而我只希望它是localhost/website.com/en/
知道为什么它不用$newlink替换'#'吗? 谢谢
$_server['HTTP_HOST']
不包括协议,没有协议链接是相对的。
您可以在href
前缀//
,以允许任何http协议(http或https),但是正如在评论中提到的,您也不需要JS来完成此操作。
echo "
<div class='top-bar'>
<a class='language-selector'
id='language-switch-btn'
href='//".$new_link."'>Language</a>
</div>
";