DOMDocumentへのアクセスを許可しない単純なHTML文字列(HTML-tidyに関係なく)をロードしようとしています。ここでPHP DOMDocumentは常に空のオブジェクトを生成します
私が取得インスタンス化
$doc = new DOMDocument(/*'1.0', 'utf-8'*/);
$doc->recover = true;
$doc->strictErrorChecking = false;
$doc->formatOutput = true;
$doc->load($content);
$node_array = $doc->getElementsByTagName("body");
print_r($node_array)
...または$node_array->items(0);
です:
DOMNodeList Object
(
)
のDOMDocumentは、それがリソースではありません 保存機能を持つだけで罰金文字列を返します。それは、依存関係、追加のPHP構成...が欠けている可能性がありますか?
更新:のDOMDocumentのオブジェクトは、単に任意ののtoString変換機能が実装されていない:クラスのDOMNodeListの
print_r((string)$node_array);
オブジェクトがで....
文字列に変換することができませんでした
HTMLコードはここにあります: http://pastebin.com/11V92Dup(意図的に不正な形式 - これはコードで、「きちんとした」がタグを適切に閉じていることを証明することです)
私は単にノードと出力その内容を歩きたい:
$node_array = $doc->getElementsByTagName("html");//parent_node();
$x = $doc->documentElement;
foreach ($x->childNodes AS $item)
{
print $item->nodeName . " = " . $item->nodeValue . "<br />";
}
UPDATE 2:私はこの結果を得ます!それは意味をなさない。 (すべての空白はどこから来るのですか?)
body =
COMPOUND: C05441
あなたのHTML文字列はどこですか? – ajreal
申し訳ありませんが、まさに質問ですか?あなたはすべての体を文字列として取得したいですか?これが真で、DOMDocumentでこれを行う場合は、最初のノードをクローンして新しいDOMDocumentに挿入する必要があります。このように - $ node_arr = $ doc-> getElemenetsByTagName( 'body'); if($ node_arr-> length){$ new_dom =新しいDOMDocument; $ new_dom-> appendChild($ node_arr-items(0) - > cloneNode(true))}を実行します。しかし、sunstring/strposやregexpをもっとうまく使うための助言 – ZigZag
bodyタグの下のHTMLタグによって空白が生じています。何を探していますか? – ajreal