gpt4 book ai didi

php - 如何在已解析的 HTML 数据中查找元素

转载 作者:行者123 更新时间:2023-12-02 08:09:05 26 4
gpt4 key购买 nike

这里我有一个非常简单的代码来获取类名为“info_block”的所有“div”元素。我想知道如何从“info_block”中找到另一个具有类名“price”的元素并显示它而不是整个“info_block”元素。主要目标:查找类名“info_block”的每个元素的价格。但在 foreach 内部执行,因为我可能需要查找其他元素。

<?php
$page = file_get_contents('example.com');
$dom = new DOMDocument();
$dom->loadHTML($page);
$xpath = new DOMXPath($dom);
$div1 = $xpath->query('//div[@class="info_block"]');
foreach ($div1 as $var1){
//echo $dom->saveHTML($var1);
}
?>

每个“info_block”中都有一个类名为“price”的元素,我只想显示该元素。就像这样...

   foreach ($div1 as $var1){ 
$dom2 = new DOMDocument();
$dom2->loadHTML($dom->saveHTML($var1));
$xpath2 = new DOMXPath($dom2);
$div2 = $xpath2->query('//div[@class="price"]');
$div2 = $div2->item(0);
echo $dom2->saveHTML($div2);
}

但它不像以前那样只给我价格,而是返回“info_block”的整个 HTML。

最佳答案

您可以提供每个 <div class="info_block">找到并搜索<div class="price">"通过在 ->query() 的第二个参数中提供它:

$div1 = $xpath->query('//div[@class="info_block"]'); 
foreach ($div1 as $var1){
$div2 = $xpath->query('./div[@class="price"]', $var1);
// ^ each div
$div2 = $div2->item(0);
echo $dom->saveHTML($div2);
}

注意:您不需要创建 DOM 的另一个实例和DOMXpath .

此示例被考虑到这种 HTML 语义的上下文中:

<div class="info_block"> // each info block
<div class="price">1</div> // inside of it has price
</div>
<div class="info_block">
<div class="price">2</div>
</div>

关于php - 如何在已解析的 HTML 数据中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39866973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com