将php变量内容转换为html字符串

时间:2013-03-04 18:09:48

标签: php html parsing variables

我使用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');

我怎样才能这样做,以便在str_get_html中将$ e内容显示为常规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')中。

1 个答案:

答案 0 :(得分:0)

$e是一个数组或对象。将它转换为数组将确保即使它是单个对象也可以内爆,然后implode将在所有对象上调用__toString,为您提供单个html字符串:

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

数组转换可能有点过分,因为为了从find得到一个单独的对象作为返回值,你必须用特定的索引来调用它 - 所以你可能知道是否要转换。但是,如果你正在围绕一堆玩杂耍$e,那么就可能更容易将它像我所展示的那样投射,所以它不会爆炸。

在这种情况下,你需要在API中找到你想要的方法并在每个元素上调用它... Id使用array_map:

$htmlstr = implode("\n", array_map(function ($node) { return $node->whatever; }), (array) $e);