友
我希望找到一种最有效的方法来选择锚标记,该标记将包含用户提交的链接以链接到外部网站,而不是错误地将其附加到当前网站网址的末尾。
// Explanation:
许多人都知道,在Joomla中编写链接时,如下所示:
<a href="google.com">Google</a>
或
<a href="<?=JRoute::_('google.com')?>">Google</a>
它将href附加到当前站点url。
例如,如果我的网站是http://www.stackoverflow.com/questions/ask
我点击上面的任一链接都会转到http://www.stackoverflow.com/questions/ask/google.com
...而不是看起来很自然,只是带我去google.com
// End Explanation
当然我知道将http://添加到href解决了这个问题。但是对于用户提交的内容,这意味着调用基于字符串的方法来检查用户提交的链接,以确保http://(或https等)是启动URL的内容,如果没有,则追加它。
有人可以解释其他选择。我希望找出是否有更好,更有效的方法。
另外,如果事实证明我是以最好的方式做到这一点,那么我很乐意看到其他人使用这个字符串函数。
谢谢Stackfriends。
答案 0 :(得分:1)
这不是一个“Joomla”行为,就像标准所定义的URL的解决方式一样。您所谈论的是浏览器等应该如何处理相对或绝对URL。
改变这种行为是IMO只会导致悲伤。
上阅读更多内容网址是表示标识符的字符串。
网址是相对网址或绝对网址。两种形式都可以 然后是片段。
相对网址是没有方案的网址。相对URL必须是 相对于基本URL。
绝对网址是带有方案的网址。
基本网址是具有相对方案的绝对网址。
答案 1 :(得分:1)
此代码将强制执行http:// for $unknownlink
without scheme(protocol):
$link = JUri::getInstance($unknownlink);
if (!$link->getScheme()) $link->setScheme('http');
echo JHtml::link($link, $link, ['target' => '_blank']);
适用于J3.4,不确定旧版本