我剛剛開始閱讀有關DOM的文檔和示例,以便抓取和解析文檔。在DOM中的DOMDocument
,比如我有文件部分如下圖所示:
<div id="showContent">
<table>
<tr>
<td>
Crap
</td>
</tr>
<tr>
<td width="172" valign="top"><a href="link"><img height="91" border="0" width="172" class="" src="img"></a></td>
<td width="10"> </td>
<td valign="top"><table cellspacing="0" cellpadding="0" border="0">
<tbody><tr>
<td height="30"><a class="px11" href="link">title</a><a><br>
<span class="px10"></span>
</a></td>
</tr>
<tr>
<td><img height="1" width="580" src="crap"></td>
</tr>
<tr>
<td align="right">
<a href="link"><img height="16" border="0" width="65" src="/buy"></a>
</td>
</tr>
<tr>
<td valign="top" class="px10">
<p style="width: 500px;">description.</p>
</td>
</tr>
</tbody></table></td>
</tr>
<tr>
<td>
Crap
</td>
</tr>
<tr>
<td>
Crap
</td>
</tr>
</table>
</div>
我嘗試使用下面的代碼來獲取所有tr
標籤和分析是否有垃圾或信息在其內部:
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$tags = $xpath->query('.//div[@id="showContent"]');
foreach ($tags as $tag) {
$string="";
$string=trim($tag->nodeValue);
if(strlen($string)>3) {
echo $string;
echo '<br>';
}
}
但是我越來越剛剛剝離的字符串沒有標籤,例如:
Crap
Crap
Title
Description
但我想獲得:
<tr>
<td>Crap</td>
</tr>
<tr>
<a href="link">title</a>
</tr>
如何保持HTML節點(標籤)?
請參閱[PHP的DOMDocument中的innerHTML](http://stackoverflow.com/questions/2087103/innerhtml-in-phps-domdocument)。 – netcoder 2011-02-12 18:45:17
您的XPath與div匹配。要獲得顯示的HTML,您必須使用不同的XPath查詢/查詢,然後將結果傳遞給`echo $ dom-> save($ node)`。請澄清你想要得到什麼。 – Gordon 2011-02-12 18:53:49
@netcoder innerHTML在這裏根本不需要。 – Gordon 2011-02-12 18:57:58