私はシンプルに行くつもりです。あなたはすでに持っています:
$dom = new DOMDocument;
$dom->loadHTML($webtext['content']);
$main = $dom->getElementById('inter');
$dom->saveHTML();
今、を持つ拡張するものDOMDocument::getElementById()
を返します。その 内にテキスト以外のものを期待しているかどうかを指定していないので、そこにプレーンテキストとして保存される可能性のあるものは何でも必要であると仮定します。そのために、 を削除し、代わりに次のように置き換えます。 DOMElement
DOMNode
public string
nodeValue
div
$dom->saveHTML();
$divString = $main->nodeValue;
それで、あなたの例から、望ましい出力である$divString
が含まれます。//SOME THINGS IN MY DIV
ただし、文字列表現だけでなく、その内部の HTML が必要な場合は、代わりに次のように置き換えます。
$divString = "";
foreach($main->childNodes as $c)
$divString .= $c->ownerDocument->saveXML($c);
これは、独自の DOMNode を含む each を含む inherited を利用して (参照用、上記を参照)、それぞれをループしてDOMNode::childNodes
whichを取得し、関数を呼び出します。現在のノードを関数に渡す理由は、有効なドキュメント全体が出力されないようにするためです。これは、ループしているものであるため、一度に 1 つずつ子を取得する必要があり、子を残さないようにする必要があります。(すみません、遅くなりました、我慢できませんでした。)DOMNodeList
ownerDocument
DOMDocument
DOMDocument::saveXML()
$c
ownerDocument
さて、どちらのオプションを選択した後でも、自分のやりたいことを実行できます$divString
。これがプロセスの説明に役立つことを願っています。機能するという理由だけでコードをコピーするのではなく、何が起こっているのかをよりよく理解していただければ幸いです。^^