我有一个表单,要求用户提交一个网站,然后在另一个页面上我发送一个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://”并且它工作但现在我意识到并非所有网站都会从那开始。
我试过谷歌搜索这个问题,但我不太确定如何说出问题所以我没有得到任何东西。
如果这是重复,我道歉。我没有看到任何适合我的问题,所以任何帮助将不胜感激。感谢。
答案 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
,那么属性值仍为相对值,并将定位到
你的网址。