2016-06-13 15 views
0
$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というDOMDocument要素aノードからの取得方法結果で

<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:私は少しあなたのコードを改善し、このバージョンは私のため正常に動作

答えて

2

...私は$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 
関連する問題