php dom从循环中获取多个元素

问题描述 投票:0回答:1

下面是我的html结构,我想输出类似:post_message div和相应图像中的内容

类似:

test 123 -> 1.png
test 1232 -> 2.png
test 1232 -> 3.png

HTML内容

<div class="abc">
    <div>
        <div class="udata">
            <div class="post_message"><p>test 123</p></div>
            <div class="">
                <img class="scaledImageFitWidth img" src="1.png">
            </div>
        </div>
    </div>
</div>
<div class="abc">
    <div>
        <div class="udata">
            <div class="post_message"><p>test 1232</p></div>
            <div class="">
                <img class="scaledImageFitWidth img" src="2.png">
                <img class="scaledImageFitWidth img" src="3.png">
            </div>
        </div>
    </div>
</div>

下面是我的php代码,但似乎不起作用:

<?php 
$dom = new DomDocument();
// $dom->load($filePath);
@$dom->loadHTML($fop);
$finder = new DomXPath($dom);
$classname="udata";
$nodes = $finder->query("//*[contains(@class, '$classname')]");

// print_r($nodes);

foreach ($nodes as $i => $node) {


    $entries = $finder->query("//*[contains(@class, 'post_message')]", $node);
    print_r($entries);

    $isrc  =  $node->query("//img/@src");
    print_r($isrc);
}
php dom
1个回答
2
投票

[使用XPath时,始终需要使XPath相对于起始节点,因此,使用descendant轴可确保限制后续搜索仅在起始点的节点部分。

© www.soinside.com 2019 - 2024. All rights reserved.