Html结构:
<div id="product">
<p>some text</p>
<p>some text2</p>
</div>
我的PHP代码:
$client = new Client();
$crawler = $client->request('GET', $url);
echo $crawler->filter('#product')->text();
返回:
some text some text2
但我需要:
<p>some text</p>
<p>some text2</p>
答案 0 :(得分:4)
嗯,有一种但很丑陋的方式 - 通过迭代它的节点:
$html = '';
foreach ($crawler as $domElement) {
$html.= $domElement->ownerDocument->saveHTML();
}
或者,在您的情况下,您应该迭代过滤后的元素:
$html = '';
$product = $crawler->filter('#produkt');
foreach ($product as $domElement) {
foreach($domElement->childNodes as $node) {
$html .= $domElement->ownerDocument->saveHTML($node);
}
}
答案 1 :(得分:0)
更多“更好,更现代,更不丑陋”的方式->使用html()
和outerHtml()
。参见DomCrawler Component。