How to force an HTML link to be absolute?
If you prefix the URL with //
it will be treated as an absolute one. For example:
<a href="//google.com">Google</a>
.
Keep in mind this will use the same protocol the page is being served with (e.g. if your page's URL is https://path/to/page
the resulting URL will be https://google.com
).
I recently had to do something similar.
if (strpos($url, 'http') === false) { $url = 'http://' .$url;}
Basically, if the url doesn't contain 'http' add it to the front of the string (prefix).
Or we can do this with RegEx
$http_pattern = "/^http[s]*:\/\/[\w]+/i";if (!preg_match($http_pattern, $url, $match)){ $url = 'http://' .$url;}
Thank you to @JamesHilton for pointing out a mistake. Thank you!
Use a protocol, preferably http://
<a href="http://www.google.com">Google</a>
Ask users to enter url in this format, or concatenate http:// if not added.
If you prefix the URL only with //
, it will use the same protocol the page is being served with.
<a href="//google.com">Google</a>