0

PHP Simple HTML DOM parserを使用して、html からデータを解析しています。

$html = file_get_html('www.example.com');
$e= $html->find('div[class=BodyContent]');

変数 $e には、html データ (div、imgs など) が含まれます。foreach ループで画面に表示すると、画面に完全に出力されます。この $e を文字列に変換するにはどうすればよいですか? 私の目標は、次のようにして使用することです。

$x = str_get_html('<div id="BodyContent">Hello</div>
                   <div id="world">World</div>...otherData');

$e コンテンツが str_get_html 内の通常の HTML として表示されるようにするにはどうすればよいですか?

更新:変数 $e には、解析後の HTML データが含まれている必要があります。

<div id="BodyContent">
  <div id="somethingelse>
    <p>Some more content</p><a>Some links</a>
  <span></span>
</div>

SimpleHtmlDom の関数では、パラメーター 1 を文字列にする必要があるため、変数 $e を文字列に変換して、これらすべての div と段落を str_get_html('HERE') に挿入できるようにします。

4

1 に答える 1

0

$e配列またはオブジェクトです。配列にキャストすると、単一のオブジェクトであっても、その上にimplodeできることが保証されます。その後、implodeはすべてのオブジェクトに対して__toStringを呼び出し、単一のhtml文字列を提供します。

$htmlstr = implode("\n", (array) $e);

戻り値として単一のオブジェクトを取得するには、特定のインデックスを使用してオブジェクトを呼び出す必要があるため、配列のキャストはやり過ぎになる可能性がありますfind。おそらく、キャストするかどうかはわかりますが$e、たくさん、それが爆発しないように、それをiveshowのようにキャストする方が簡単かもしれません。

その場合、APIで必要なメソッドを見つけて、各要素で呼び出す必要があります...これにはarray_mapを使用します。

$htmlstr = implode("\n", array_map(function ($node) { return $node->whatever; }), (array) $e);
于 2013-03-04T18:19:08.437 に答える