如何检索URL协议("http"或“https")


How do retrieve a URL protocol ("http" or "https")?

我正在使用PHP库Simple HTML Dom Parser,如这里所建议的(如何在PHP中解析和处理HTML/XML ?)解析网页的HTML内容。

要创建DOM,我必须这样做:
$html = file_get_html('http://www.example.com/');

问题是如果我这样做:

$html = file_get_html('www.example.com');

没有指定URL的协议,我将得到一个错误。

问题是:我怎样才能知道协议的URL是"http://www.example.com/"还是"https://www.example.com/",手上只有字符串"www.example.com"?

我想不出比将"http://"作为默认值更聪明的方法,如果失败,试试"https://"

if (!$html = file_get_html('http://' . $url)) $html = file_get_html('https://' . $url);

没有办法知道,因为两者都可能有效。我认为http://虽然,因为正常的做法是重定向http到https,如果它是必要的,和file_get_html应该遵循http 301或302重定向。

您可以尝试在http地址上使用get_headers()并在header中查找Upgrade:请求。如果得到有效的响应,则使用http。