提取td标签的属性值(php)

时间:2014-03-22 14:23:23

标签: php regex domdocument

<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") {

                                      ...................
                         }

                    }

非常感谢!

1 个答案:

答案 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属性。