0

我正在使用PHP Simple HTML DOM parser从 html 解析数据。

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

变量 $e 包含 html 数据(divs、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是一个数组或一个对象。将其转换为数组将确保即使它是单个对象也可以对其进行内爆,然后内爆将在所有对象上调用 __toString ,为您提供单个 html 字符串:

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

数组强制转换可能是矫枉过正,因为为了只获得一个对象作为返回值,find您必须使用特定索引调用它 - 所以大概您会知道是否强制转换......但是如果您正在玩弄$e一个束它可能更容易像 ive show 一样投射它,这样它就不会爆炸。

在这种情况下,您需要在 API 中找到所需的方法并在每个元素上调用它......我为此使用 array_map:

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