[英]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.