2011-08-26 159 views
1

我使用PHP lib简单的HTML Dom解析器,如此处建议的(How do you parse and process HTML/XML in PHP?)解析网页的html内容。如何检索URL协议(“http”或“https”)?

要创建的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”?

+0

那么,你不能。域名与使用的协议完全无关 - 也可能是'ftp://',或者更奇特的东西。 (至于错误:它试图打开一个名为“www.example.com”的本地文件 - 你的磁盘上可能没有这个文件:)) – Piskvor

回答

2

我想不出什么更聪明不是假设的 “http://” 为默认值,如果它失败,请尝试 “https://开头”

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

这很好。谢谢! – AntonioJunior

2

没有办法知道,因为两者都有效。但我会假设http://,因为通常的做法是将http重定向到https,如果需要的话,file_get_html应遵循HTTP 301或302重定向。

1

你可以尝试使用get_headers()在http地址上查找标题中的升级:请求。如果您收到有效的回复,请使用http。否则,请尝试使用https。