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

时间:2011-08-26 00:42:04

标签: php

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

3 个答案:

答案 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。