我正在使用PHP lib Simple HTML Dom Parser,如此处所建议的那样(How do you parse and process HTML/XML in PHP?)来解析网页的html内容。
要创建DOM,我必须这样做:
$html = file_get_html('http://www.example.com/');
问题在于,如果我这样做:
$html = file_get_html('www.example.com');
如果没有指定URL的协议,我将收到错误。
我的问题是: 如何知道协议中的网址是“http://www.example.com/”还是“https://www.example.com/”,手中只有字符串“www.example.com”?
答案 0 :(得分:2)
没有办法知道因为两者都有效。我会假设http://
,因为正常做法是在需要时将http重定向到https,file_get_html
应遵循HTTP 301或302重定向。
答案 1 :(得分:2)
我无法弄清楚比默认使用“http://”更聪明的东西,如果失败,请尝试“https://”
if (!$html = file_get_html('http://' . $url)) $html = file_get_html('https://' . $url);
答案 2 :(得分:1)
您可以尝试在http地址上使用get_headers()并在标头中查找Upgrade:请求。如果您收到有效的回复,请使用http。否则,请尝试使用https。