我正在使用Symfony的DomCrawler组件.我已成功检索节点,添加和修改HTML.
但是,我不确定如何在最后实际获取HTML.我试图在DomCrawler更改之后获取HTML字符串,但我无法找到如何做到这一点.
没有神奇的__toString()方法(当我这样做时它会返回错误print $crawler).没有get*()方法,没有html作为值的属性.我试过了,vardump($crawler)但没有用.
UPDATE
如果我使用
$crawler->first()->ownerDocument->saveHtml()
Run Code Online (Sandbox Code Playgroud)
它引发了一个关于"在非对象上调用saveHtml()"的异常,加上PHP错误:
未定义的属性:Symfony\Component\DomCrawler\Crawler :: $ ownerDocument
我尝试使用eq(0)而不是first()但得到相同的错误.
但是,如果我改用使用
each( function($node, $i) {
print $i . " - " . $node; }
)
Run Code Online (Sandbox Code Playgroud)
然后它返回
0 - <html>...</html>
Run Code Online (Sandbox Code Playgroud)
编辑:正如@dbu所指出的那样,自从Symfony 2.3开始就可以使用这种Crawler::html()方法.
Crawler是DOMElement对象的集合(SplObjectStorage).知道您可以使用DOMElement,DOMNode和DOMDocument中提供的任何方法和属性:
$html = '';
foreach ($crawler as $domElement) {
$html.= $domElement->ownerDocument->saveHTML();
}
echo $html;
Run Code Online (Sandbox Code Playgroud)
有用的链接:
| 归档时间: |
|
| 查看次数: |
9615 次 |
| 最近记录: |