gpt4 book ai didi

PHP简单的HTML DOM解析

转载 作者:行者123 更新时间:2023-11-27 23:49:52 26 4
gpt4 key购买 nike

我想使用 dom 解析器从一些 html 代码中提取一些信息,但我卡住了。

<div id="posts">
<div class="post">
<div class="user">me:</div>
<div class="post">I am an apple</div>
</div>
<div class="post">
<div class="user">you:</div>
<div class="post">I am a banana</div>
</div>
<div class="post">
<div class="user">we:</div>
<div class="post">We are fruits</div>
</div>
</div>

这将打印用户。

$users= $html->find('div[class=user]');
foreach($users as $user)
echo $user->innertext;

这将打印帖子。

$posts = $html->find('div[class=post]');
foreach($posts as $post)
echo $post->innertext;

我想将它们一起打印,而不是单独打印,如下所示:

me:
I am an apple
you:
I am a banana
we:
We are fruits

我如何使用解析器执行此操作?

最佳答案

使用您提供的标记,您可以只指出主 div (div#posts) 的子项,然后循环所有子项。然后为每个 child 得到第一个和第二个:

foreach($html->find('div#posts', 0)->children() as $post) {
$user = $post->children(0)->innertext;
$post = $post->children(1)->innertext;
echo $user . '<br/>' . $post . '<hr/>';
}

虽然我真的建议使用 DOMDocument :

$dom = new DOMDocument;
$dom->loadHTML($html_markup);
$xpath = new DOMXpath($dom);
$elements = $xpath->query('//div[@id="posts"]/div[@class="post"]');
foreach($elements as $posts) {
$user = $xpath->evaluate('string(./div[@class="user"])', $posts);
$post = $xpath->evaluate('string(./div[@class="post"])', $posts);
echo $user . '<br/>' . $post . '<hr/>';
}

关于PHP简单的HTML DOM解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27922051/

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