【发布时间】:2011-09-03 19:45:48
【问题描述】:
我的 HTML 格式不正确,无法更改。运行 XPath 查询根本不会返回节点:
$el = $xpath->query("//a[@class='product']/table"); // can get a tag with "//a[@class='product']"
print_r($el->length); // 0
HTML 格式错误:
<a class="product" href="#">
<table width="385" cellspacing="0" cellpadding="5" style="border:1px; border-bottom-color:#E2E2E2; border-bottom-style:solid;">
<tr>
<td width="55">
<img src="http://foobar.com:8080/img/1212.jpg" height="50" width="50">
</td>
<td width="195">Cod.27731<br>Product Name</td>
<td width="60" align="center"><a href="?pageContent=items&price=fab&prodcod=27731">Details</a></td>
<td width="80" nowrap>
<div style="color:#FF0000;"><strong>$ 35.23</strong></div>
</td>
</tr>
</table>
</a>
我可以得到 a 元素但我不能得到它的子元素(表格)...
【问题讨论】:
-
如果您使用
$document->saveHTML(),您会注意到DomDocument 会在<table>之前自动关闭<a>标签。 -
将 saveHTML() 修复格式错误的 HTML 吗?
-
我认为
loadHTML()已经修复了格式错误的 HTML(在这种情况下,通过关闭 a 标签) -
saveHTML 返回一个字符串,但我不能用它来创建一个新的 DOMDocument :(
标签: php html dom xpath malformed