我正在使用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。