<tr>
<td>New order info</td>
<td class="emailid"><input type="button" class="product product-info" value="View product" onclick="popupWindow('viewproduct.php?id=481244','emlmsg',650,400)" /></td>
</tr>
<tr
我希望获得td标记中的ID号,前面是“新订单信息&#39;”。上面是html代码的摘录。 我试图使用正则表达式和domdocument这样做,但没有得到所需的结果。我正在考虑使用DocDocument的getElementsByTagName方法获取所有td标签元素,如果td文本值为&#39;新订单信息&#39;,请在下一个td标签中获取属性。但是我& #39;我不知道该怎么做或这是正确的方法。我试过nextSibling但在这种情况下没有工作。有没有办法在下一个td标签中获取属性值?
$DOMNodelist = $doc->getElementsByTagName('td');
foreach($DOMNodelist as $DOMElements) {
if ($DOMElements->nodeValue == "New order info") {
...................
}
}
非常感谢!
答案 0 :(得分:2)
在这里使用XPath:
$html = <<<EOF
<tr>
<td>New order info</td>
<td class="emailid"><input type="button" class="product product-info" value="View product" onclick="popupWindow('viewproduct.php?id=481244','emlmsg',650,400)" /></td>
</tr>
EOF;
$doc = new DOMDocument();
$doc->loadHTML($html);
$selector = new DOMXPath($doc);
$td = $selector->query('//td[text() = "New order info"]/following-sibling::td')->item(0);
var_dump($td);
上面的示例选择了<td>
节点,其前面是“新订单信息”#39;。但是,td标记没有id属性。