外部链接在内部发送给我

时间:2018-02-09 18:32:06

标签: php html

我有一个表单,要求用户提交一个网站,然后在另一个页面上我发送一个mysql查询来检索该网站,并通过在PHP中执行此操作将其转换为链接(V = 5.6)

$link = '<a href=' . $school_website .' target="_blank">' . $school_website . '</a>';

问题在于,当我尝试点击此链接时,不是将我发送到www.google.com,而是将其定向到www.mydomain.com/www.google.com。

我最初通过使用substr来修复它,看看第一部分是否是“www”,如果它正在添加“http://”并且它工作但现在我意识到并非所有网站都会从那开始。

我试过谷歌搜索这个问题,但我不太确定如何说出问题所以我没有得到任何东西。

如果这是重复,我道歉。我没有看到任何适合我的问题,所以任何帮助将不胜感激。感谢。

3 个答案:

答案 0 :(得分:1)

总是可以检查它是否有带有正则表达式的http / s://,如果它没有,那么添加http://并且该链接将按预期工作。或者让它丑陋而简单。

最简单的方法是删除任何协议和前缀// - 这会将链接标记为绝对并采用您当前的协议。即使它没有http / s://它也可以正常工作。

$school_website = '//' . str_ireplace(['https://', 'http://'], '', $school_website);

实施例: https://google.com成为//google.com google.com成为//google.com www.google.com变为//www.google.com

在上述任何一种情况下,它都会成为一个绝对的网址。

更好但更长的方法是使用正则表达式验证网址。

答案 1 :(得分:0)

您需要在外部链接的网址开头显示http://https:// - 事实上,这应该是您的变量“$ school_website”的一部分,并且如果该变量是例如从数据库,必须在数据库中更改该值。

答案 2 :(得分:0)

直到您在网址前添加http://https://。它仍然是相对的

如果您使用www.mydomain.com并且href属性值为www.google.com,那么属性值仍为相对值,并将定位到 你的网址。