Php 当我动态设置href时,为什么浏览器会连接它?

Php 当我动态设置href时,为什么浏览器会连接它?,php,html,href,Php,Html,Href,我正在开发一个语言切换器,我使用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('/f

我正在开发一个语言切换器,我使用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>

";
?>

$\u服务器['HTTP\u主机]
不包括协议,没有协议链接是相对的

您可以在
href
前面加上
/
前缀,以允许使用任何http协议(http或https),但如评论中所述,您也不需要JS来执行此操作

echo "
<div class='top-bar'>
  <a class='language-selector'
     id='language-switch-btn'
     href='//".$new_link."'>Language</a>
</div>
";
echo”
";

如果这是一个JavaScript问题,您应该共享生成的JavaScript代码,而不是源PHP。但我看不出
.href='blah'
怎么可能连接起来。您是否验证了PHP变量包含的内容?它确实包含,但没有协议
localhost/website.com/en/
是从当前文件夹开始的相对路径为什么在这里使用JavaScript?只需
echo”“
@因为我是新手。非常好的建议,谢谢!或者,从链接中删除
$\u服务器['HTTP\u HOST']
,并将其设置为绝对路径是的,我只是猜测有理由让主机进入,但这是公平的