2013-03-29 112 views
1
$rss = new DOMDocument(); 
$rss->load($url); 

如果我希望用戶給任何rssfeed鏈接來獲取xml文檔,並且用戶試圖給出任何不包含任何xml文檔的任意鏈接。它肯定會顯示錯誤或警告。如何驗證DOMDocument對象

我該如何驗證這種情況?

回答

4

使用libxml_use_internal_errors自行處理的錯誤。從http://php.net/manual/de/function.libxml-use-internal-errors.php

// enable user error handling 
libxml_use_internal_errors(true); 

// load the document 
$doc = new DOMDocument; 

if (!$doc->load('file.xml')) { 
    foreach (libxml_get_errors() as $error) { 
     // handle errors here 
    } 

    libxml_clear_errors(); 
} 
+0

非常感謝你redreggae。你節省了我的時間。有效。 –

0

您可以使用負載的返回值來檢查錯誤,並抑制輸出與@

$rss = new DOMDocument(); 
if (@$rss->load($url) == false) { 
    //error... 
} 
+0

即使現在其顯示警告 「警告:DOM文檔::負載()[domdocument.load]:的EntityRef:期待」。 –

+0

你用set_error_handler設置了自己的錯誤處理程序嗎? – Philipp

0

實施例嘗試這種情況:

$errors = array(); 
set_error_handler(function ($number, $error) use (&$errors) { 
    if (preg_match('#^DOMDocument::load\(\):#', $error)) { 
     $errors[] = $error; 
    } 
}); 

$url = ''; 
$doc = new DOMDocument(); 
if ($doc->load($url) === false) { 
    // handle errors from $errors 
} 

restore_error_handler();