これはdomを作成し、htmlを保存するサンプルPHPコードです。savehtmlが失敗したときの検出方法?
$doc = new DOMDocument('1.0');
$root = $doc->createElement('html');
$root = $doc->appendChild($root);
$head = $doc->createElement('head');
$head = $root->appendChild($head);
$title = $doc->createElement('title');
$title = $head->appendChild($title);
$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);
echo $doc->saveHTML();
saveまたはsaveHTML()が失敗した場合、どのように捕捉できますか?
何か助けていただきありがとうございます。
更新日:
次のコードでエラーをキャッチします。私は意図的にランダムな文字列を構築しました。この文字列をdomドキュメントにロードしてエラーをキャッチしたいと思います。
<?php
$str = "uyiuyiuhkjh<><><.,><.<.";
$dom = new DOMDocument;
$dom->loadHTML($str);
$saved = $dom->saveHTML();
//This doesnt work.
if ($saved === false){
echo 'Unable to save DOM document';
}
else{
echo $saved;
}
?>
UPDATE 2:
次のコードは失敗します。すなわち、解析中にnavタグを認識しない。これは、エンティティで無効なタグナビを与えます。
<?php
$str = "<html> <head> </head> <body> <nav> </nav> </body> </html>";
$dom = new DOMDocument;
$dom->loadHTML($str);
$saved = $dom->saveHTML();
if ($saved === false){
echo 'Unable to save DOM document';
}
else{
echo $saved;
}
?>
ここで、エラーを抑制するために、私はlibxml_use_internal_errors(true)を使用できます。エラーメッセージが表示されなくなりましたが、$ dom-> saveHTML()はfalseまたは空を返しません。そのため、saveHTMLまたはloadHTMLにエラーが発生したときを知ることは困難です。助けてください!!
'$ foo = $ doc-> saveHTML(); if(empty($ foo)){die( "Ruhroh"); } ' –
私はこれを試して、それは動作しませんでした。私は警告を受けるだけです。 – kofhearts