2011-08-26 155 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。