私はDOMCrawlerを使用して、CSSセレクターに基づいてHTMLを選択しています。
$selector = '#content';
$html = $my_fetched_html;
$crawler = new Crawler($html);
$crawler = $crawler->filter($selector);
これはすべて問題ありません。$crawler要素を反復処理すると、セレクターが機能したことが確認されます。つまり、完全なhtmlではなくdivのみが取得されます。
しかし、HTMLを保存することになると、このようなことをするので問題があります。
$html = '';
foreach ($crawler as $domElement) {
$html.= $domElement->ownerDocument->saveHTML();
}
echo $html;
(この質問で示されているように)
$ ownerDocumentがまだ元の(選択されていない)$ crawlerドキュメントであるため、完全な構造を再び取得し、それを想定しています。
したがって、必要なのは、新しいDomDocumentをインスタンス化できるようにすることです(おそらく?)要素をそれに追加し、そこからHTML()を保存します。おもう?
擬似コード;
$doc = new DomDocument
foreach ($crawler as $domElement) {
$doc->addChild($domElement);
}
$new_html = $doc->saveHTML();
私はどんな助けも欲しいです、それは私の頭をやり始めます。