gpt4 book ai didi

php - 如何使用dom php解析器

转载 作者:IT王子 更新时间:2023-10-29 00:11:16 26 4
gpt4 key购买 nike

我是 PHP 中 DOM 解析的新手:
我有一个要解析的 HTML 文件。它有一堆这样的 DIV:

<div id="interestingbox"> 
<div id="interestingdetails" class="txtnormal">
<div>Content1</div>
<div>Content2</div>
</div>
</div>

<div id="interestingbox">
......

我正在尝试使用 php 获取许多 div 框的内容。我如何使用 DOM 解析器来执行此操作?

谢谢!

最佳答案

首先我必须告诉你,你不能在两个不同的div 上使用相同的id;有针对这一点的类(class)。每个元素都应该有一个唯一的 ID。

获取id="interestingbox"的div内容的代码

$html = '
<html>
<head></head>
<body>
<div id="interestingbox">
<div id="interestingdetails" class="txtnormal">
<div>Content1</div>
<div>Content2</div>
</div>
</div>

<div id="interestingbox2"><a href="#">a link</a></div>
</body>
</html>';


$dom_document = new DOMDocument();

$dom_document->loadHTML($html);

//use DOMXpath to navigate the html with the DOM
$dom_xpath = new DOMXpath($dom_document);

// if you want to get the div with id=interestingbox
$elements = $dom_xpath->query("*/div[@id='interestingbox']");

if (!is_null($elements)) {

foreach ($elements as $element) {
echo "\n[". $element->nodeName. "]";

$nodes = $element->childNodes;
foreach ($nodes as $node) {
echo $node->nodeValue. "\n";
}

}
}

//OUTPUT
[div] {
Content1
Content2
}

类示例:

$html = '
<html>
<head></head>
<body>
<div class="interestingbox">
<div id="interestingdetails" class="txtnormal">
<div>Content1</div>
<div>Content2</div>
</div>
</div>

<div class="interestingbox"><a href="#">a link</a></div>
</body>
</html>';

//the same as before.. just change the xpath

[...]

$elements = $dom_xpath->query("*/div[@class='interestingbox']");

[...]

//OUTPUT
[div] {
Content1
Content2
}

[div] {
a link
}

引用DOMXPath页面了解更多详情。

关于php - 如何使用dom php解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/960841/

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