确保http出现在网址中

Pet*_*aig 1 php http href hyperlink

我有人发布他们的网站地址,但发布的变体如下:

当我链接到没有http://的地址时,它将链接作为内部链接

<a href="theirsite.com">their site</a>
Run Code Online (Sandbox Code Playgroud)

将人们发送到:http://mysite.com/thiersite.com

我尝试的另一个选项是链接到类似mysite.com/?link=theirsite.com的东西 - 这样我可以做一些链接跟踪等然后将人们重定向到链接但它有同样的问题:

//do some tracking etc here
$link =$_GET['link'];
header("Location: $link");
Run Code Online (Sandbox Code Playgroud)

The*_*per 8

这里不需要使用正则表达式.PHP内置了URL验证.

过滤器Var

var_dump((bool) filter_var('http://www.website.com', FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED));
var_dump((bool) filter_var('http://website.com', FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED));
var_dump((bool) filter_var('www.website.com', FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED));
var_dump((bool) filter_var('website.com', FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED));
Run Code Online (Sandbox Code Playgroud)

产量

bool(true)
bool(true)
bool(false)
bool(false)
Run Code Online (Sandbox Code Playgroud)

请不要直接跳到正则表达式进行验证,PHP内置了很多方法来处理这些场景.

-Mathew

  • 公平地说,他用PHP标签贴了它,我给了他一个PHP答案.这不是问题. (2认同)