在我的网站中,用户可以在他们的个人资料中放置一个 URL。
此 URL 可以是http://www.google.com
或www.google.com
或google.com
。
如果我只是插入我的 PHP 代码<a href="$url">$url</a>
,链接并不总是绝对的。
我怎样才能强制a
标签是绝对的?
在我的网站中,用户可以在他们的个人资料中放置一个 URL。
此 URL 可以是http://www.google.com
或www.google.com
或google.com
。
如果我只是插入我的 PHP 代码<a href="$url">$url</a>
,链接并不总是绝对的。
我怎样才能强制a
标签是绝对的?
如果您使用//
它作为 URL 的前缀,则将被视为绝对 URL。例如:
<a href="//google.com">Google</a>
.
请记住,这将使用与页面相同的协议(例如,如果您的页面的 URL 是https://path/to/page
生成的 URL 将是https://google.com
)。
使用协议,最好是http://
<a href="http://www.google.com">Google</a>
要求用户以这种格式输入 url,如果没有添加,则连接 http://。
如果您仅在 URL 前加上//
,它将使用与页面相同的协议。
<a href="//google.com">Google</a>
我最近不得不做类似的事情。
if (strpos($url, 'http') === false) {
$url = 'http://' .$url;
}
基本上,如果 url 不包含“http”,则将其添加到字符串的前面(前缀)。
或者我们可以用 RegEx 来做到这一点
$http_pattern = "/^http[s]*:\/\/[\w]+/i";
if (!preg_match($http_pattern, $url, $match)){
$url = 'http://' .$url;
}
感谢@JamesHilton 指出错误。谢谢!