簡體   English   中英

DOMDocument如何從節點獲取元素a?

[英]DOMDocument How get element a from node?

$url = file_get_contents('test.html');

$DOM = new DOMDocument();
$DOM->loadHTML(mb_convert_encoding($url, 'HTML-ENTITIES', 'UTF-8'));
$trs = $DOM->getElementsByTagName('tr');
foreach ($trs as $tr) {

    foreach ($tr->childNodes as $td){
        echo ' ' .$td->nodeValue;
    }
}

test.html

<html>
<body>
    <table>
    <tbody>
    <tr>
        <td style="background-color: #FFFF80;">1</td>
        <td><a href="test1.php" title="test1">test1</a></td>
    </tr>
    <tr>
        <td style="background-color: #FFFF80;">2</td>
        <td><a href="test2.php" title="test2">test2</a></td>
    </tr>
    <tr>
        <td style="background-color: #FFFF80;">3</td>
        <td><a href="test3.php" title="test3">test3</a></td>
    </tr>
    </tbody>
    </table>
</body>
</html>

結果我得到:

1 test1 2 test2 3 test3

但是如何從td a獲得鏈接?

以及如何從td獲取html?

PS:我嘗試用$td->find('a'); $td->getElementsByTagName('a'); 但這行不通...

我對您的代碼進行了一些改進,此版本對我來說效果很好:

$DOM = new DOMDocument();
$DOM->loadHTML(mb_convert_encoding($url, 'HTML-ENTITIES', 'UTF-8'));
$trs = $DOM->getElementsByTagName('tr');
foreach ($trs as $tr) {
    foreach ($tr->childNodes as $td){
        if ($td->hasChildNodes()) { //check if <td> has childnodes
            foreach($td->childNodes as $i) {
                if ($i->hasAttributes()){ //check if childnode has attributes
                    echo $i->getAttribute("href") . "\n"; // get href="" attribute
                }
            }
        }
    }
}

結果:

test1.php
test2.php
test3.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM