Php Joomla-强制非http://预固定链接为外部链接的最有效方法

Php Joomla-强制非http://预固定链接为外部链接的最有效方法,php,html,joomla,Php,Html,Joomla,朋友们 我正在寻找一种最有效的方法来选择锚定标记,它将包含一个用户提交的链接到外部站点的链接,而不是错误地将其附加到当前站点url的末尾 // Explanation: 正如你们中的许多人所知,在Joomla中编写以下链接时: <a href="google.com">Google</a> 当然,我知道将http://前置到href可以解决这个问题。但是,对于用户提交的内容,这意味着调用基于字符串的方法来检查用户提交的链接,以确保http://(或https等)是ur

朋友们

我正在寻找一种最有效的方法来选择锚定标记,它将包含一个用户提交的链接到外部站点的链接,而不是错误地将其附加到当前站点url的末尾

// Explanation:
正如你们中的许多人所知,在Joomla中编写以下链接时:

<a href="google.com">Google</a>
当然,我知道将http://前置到href可以解决这个问题。但是,对于用户提交的内容,这意味着调用基于字符串的方法来检查用户提交的链接,以确保http://(或https等)是url的起点,如果不是,则将其追加

有没有人能解释一下做这件事的其他方法。我希望找出是否有更好、更有效的方法

另外,如果结果证明我是以最好的方式完成的,那么我很想看看其他人对这个字符串函数使用了什么

谢谢Stackfriends。

这不是“Joomla”行为,这不是标准定义的URL解析方式。您所说的是浏览器等如何处理相对或绝对URL

改变这种行为只会导致悲伤

URL是表示标识符的字符串

URL是相对URL或绝对URL。任何一种形式都可以是 后面是一个片段

相对URL是没有方案的URL。必须指定相对URL 相对于基本URL

绝对URL是带有方案的URL

基本URL是带有相对方案的绝对URL


您可能想在

上阅读更多内容。此代码将强制执行http://for
$unknownlink
而不使用方案(协议):


在J3.4中工作,不确定旧版本

它们会是内部URL还是始终是外部URL?为了学习;如果可以的话,你的建议是什么。如果它们是严格意义上的外部链接,你会有什么建议。如果它总是外部链接,我可能只搜索
/
,如果不在字符串前面显示tack
http://
。如果可以的话,我可能会将其拆分,并提供可能的内部位置下拉列表,或者让它们输入自定义(即外部)url。因为对于内部,您可能会将它们限制在菜单项或一组有意义的预定义位置
<a href="<?=JRoute::_('google.com')?>">Google</a>
// End Explanation
$link = JUri::getInstance($unknownlink);
if (!$link->getScheme()) $link->setScheme('http');
echo JHtml::link($link, $link, ['target' => '_blank']);