我正在处理一个短路脚本,当涉及http://与URL一起传递时遇到了问题。
问题:如果用户未在其中提供带有http://的链接,则脚本无法处理它并返回无效的网址错误,而不是因为preg_match应该发生的错误解析http,https和没有其中任何一个的链接。
这是负责检查http
的代码snippt$url = $_REQUEST['url'];
if(!preg_match("/^[a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+$/i", $url)) {
$html = "<h1 id='upc' style='padding:8px 8px;text-align:center;'>Error: invalid URL</h1>";
} else {
$url = $_REQUEST['url'];
修复它并允许解析http&amp;的最佳方法是什么? https和解析没有http或https的链接
答案 0 :(得分:0)
您可以使用filter_var()
:
if (filter_var($url, FILTER_VALIDATE_URL)) {
// $url is valid
} else {
// $url is NOT valid
}
它不检查协议是否有效(所以foo://www.foo.com/bar
验证但foo:/\www.foo.com/bar
没有),但这是一个开始。根据文档,parse_url()
并非用于验证网址。