2012-11-29 43 views
2

我已經編寫了一個腳本來處理來自URL的html文件,但是,由於我的廉價主機提供商的30年代腳本運行時限制,我不得不改變腳本來存儲html作爲txt文件並從本地WAMP服務器運行。PHP簡單的HTML DOM解析器 - 不會被讀取的文件

我想加載每個文件,提取我需要的,然後移動到下一個文件。

URL的源代碼file_get_html完美地完成了任務(我可以 - >找到所需的元素) Txt文件作爲源file_get_html正在返回一個空白對象。

基於以下文章中的一些建議,我更改了file_get_htmlfile_get_contents,它創建了一個包含文本文件內容的單個大字符串的數組。

首先,確保file_get_contents可以獲取數據。如果可以,file_get_htm L將能夠將數據加載到simplehtml大教堂

如果file_get_contents返回一個字符串,它是這樣,我將如何「加載數據到simplehtml大教堂?」

File not getting read using file_get_html

然後我試圖將字符串轉換成對象str_get_html,但是,這也不能工作。

include('simple_html_dom.php'); 
$html = file_get_html('file.txt'); 
var_dump($html); 

返回:object(simple_html_dom)[1]但沒有其他內容或數組。

include('simple_html_dom.php'); 
$html = file_get_contents('file.txt'); 
var_dump($html); 

返回:string < ! DOCTYPE html PUBLIC.....

問題

誰能給我一些建議?將包含html標記的文本文件加載到對象中的最佳方法是什麼,以便我可以在其內容上使用find方法。我想避免將文件加載到字符串數組中,並使用正則表達式來處理內容。

如果使用本地WAMP服務器,是否需要考慮?

+0

你可以發佈你想要閱讀的代碼和文本文件嗎? –

+0

我在使用file_get_contents打開文件後,設法使用str_get_html修復了它。該文本文件實際上是網頁的html源代碼轉儲,例如<!DOCTYPE html PUBLIC「 - // W3C // DTD XHTML 1.0 Transitional // EN」「http://www.w3.org/TR/xhtml1/DTD/ xhtml1-transitional.dtd「> ....... – Jim

+0

完美,它工作的很棒... – Lab

回答

1

(可以通過在一個問題的回答OP轉化爲社區維基答案見Question with no answers, but issue solved in the comments (or extended in chat)

的OP寫道:

我設法解決這個我自己。我確定我已經嘗試從字符串中提取html,doh!

include('simple_html_dom.php'); 
$html = file_get_contents('file.txt');  
$html = str_get_html($html); 
var_dump($html) 

返回object(simple_html_dom)[1]包括所有預期陣列等

而不是試圖直接從使用file_get_html源文件創建HTML對象,我提取的文件內容file_get_contents然後轉換海峽到HTML使用str_get_html,它允許我使用簡單的html dom方法,例如找出對象內的屬性,例如

$html->find('a');