2009-06-25 59 views
0

當我嘗試執行DocumentDOM/SimpleXML方法時,問題只發生在一個文件上,所以它看起來像是該文件的問題。不知道它可能是什麼。在simplexml上返回頁面錯誤print_r

如果我做到以下幾點:

$file = "test1.html"; 
$dom = DOMDocument::loadHTMLFile($file); 
$xml = simplexml_import_dom($dom); 

print_r($xml); 
在Chrome

,我得到一個 「頁面Unavailable」 錯誤。在Firefox中,我一無所獲。

如果我對「test2.html」做同樣的事情,我會按預期得到一個打印輸出。

如果我嘗試同樣的事情,但做這種方式:

$file = "test1.html"; 
$data = file_get_contents($file) 
$dom = DOMDocument::loadHTML($data); 
$xml = simplexml_import_dom($dom); 

print_r($xml); 

我得到了同樣的問題。

如果我將print_r行註釋掉,則Chrome將從「Page Unavailable」變爲空白。

我將權限更改爲777,萬一出現問題,無法修復。

我試圖簡單地迴應html的內容,根本沒有問題。

爲什麼a)Chrome會這樣做的任何線索,以及b)爲什麼我沒有得到任何可用的結果?


更新:

如果我把在:$ 文件= 「test1.html」; $ dom = DOMDocument :: loadHTMLFile($ file); if(!$ dom){ echo「No Load!」; } else { $ xml = simplexml_import_dom($ dom); print_r($ xml); }

我得到同樣的問題。如果我輸入:

$file = "test1.html"; 
$dom = DOMDocument::loadHTMLFile($file); 
if(!$dom) { 
    echo "No Load!"; 
} 
else { 
    echo "Load!"; 
} 

我得到「Load!」輸出,這意味着dom方法不應該是問題(?)

我會嘗試與simplexml相同的確切測試。


UPDATE2:

如果我這樣做:

我得到了同樣的問題。如果我輸入:

$file = "test1.html"; 
$dom = DOMDocument::loadHTMLFile($file); 
$xml = simplexml_import_dom($dom); 
if(!$xml) { 
    echo "No Load!"; 
} 
else { 
    echo "Load!"; 
} 

我得到「Load!」但如果我這樣做:

$file = "test1.html"; 
$dom = DOMDocument::loadHTMLFile($file); 
$xml = simplexml_import_dom($dom); 
if(!$xml) { 
    echo "No Load!"; 
} 
else { 
    echo "Load!"; 
    print_r($xml); 
} 

我得到的錯誤。我終於發現,我有一個選項,以查看錯誤在Chrome:

Error 324 (net::ERR_EMPTY_RESPONSE): Unknown error. 

麻煩的HTML文件是288KB。這可能是問題嗎?如果是這樣,我會如何調整呢?


最後更新:

很奇怪。我可以在對象上使用方法和函數(如simplexml或domdocument),所以我可以像xpath一樣刪除或解析html等。在某些情況下(小結果)它可以回顯結果,但對於大的東西(顯示所有跨度),它以相同的方式失敗。所以,自從最終的結果,我認爲將適合這些參數,我應該沒問題(我猜)。

但是任何真正的解決方案都非常受歡迎。

回答

1
  • 打開錯誤報告:error_reporting(E_ALL);在您的PHP代碼的第一行。
  • 檢查您的PHP配置的內存限制:memory_limit在各自的php.ini中
  • test1.html和test2.html有什麼區別?也許test1.html格式不正確。
0

如果文檔格式不正確,DocumentDOM和/或SimpleXML可能會退出。嘗試是這樣的:

$dom = DOMDocument::loadHTMLFile($file); 
if (!$dom) { 
    echo 'Loading file failed'; 
    exit; 
} 

$xml = simplexml_import_dom($dom); 
if (!$xml) { 
    ... 
} 

如果在創建$ DOM工作,轉化爲$ XML應該工作一樣好,但要確保反正。

編輯:正如Gehrig所說,確保錯誤報告已經啓動,這應該明顯表明進程失敗的地方。

+0

報告錯誤。使用條件來顯示它們都加載的$ dom或$ xml顯示(請參閱更新),但print_r仍然沒有任何結果。 288K文件大小是否是問題? – Anthony 2009-06-25 07:48:13