如何使用PHP DOM获取超链接?

如何使用PHP DOM获取超链接?,php,dom,xpath,Php,Dom,Xpath,我有一个简单的HTML结构: <table> <tr> <td class="myStyle"> <a href="URLa">Name of URL a</a> </td> </tr> <tr> <td class="myStyle"> <a href="URLb">Name of URL b</a>

我有一个简单的HTML结构:

<table>
  <tr>
    <td class="myStyle">
      <a href="URLa">Name of URL a</a>
    </td>
  </tr>
  <tr>
    <td class="myStyle">
      <a href="URLb">Name of URL b</a>
    </td>
  </tr>
</table>

现在,我想通过PHPDOM了解如何获取这个URL以及名称

while($table = $tables->item($i++))
{
    $class_node = $table->attributes->getNamedItem('class');

    if($class_node)
    {
        if ($table->attributes->getNamedItem('class')->value == "myStyle") {
            $links = $tables->item($i)->getElementsByTagName('a');
            foreach ($links as $link) {
                echo "<br>" . $link->nodeName;
            }
            //echo "Class is : " . $table->attributes->getNamedItem('class')->value . PHP_EOL;
        }
    }
}
while($table=$tables->item($i++))
{
$class_node=$table->attributes->getNamedItem('class');
if($class\u节点)
{
如果($table->attributes->getNamedItem('class')->value==“myStyle”){
$links=$tables->item($i)->getElementsByTagName('a');
foreach($links作为$link){
回声“
”$link->nodeName; } //echo“类是:“.$table->attributes->getNamedItem('Class')->value.PHP\u EOL; } } }
到目前为止,我可以打印出每一行有“myStyle”类。但我无法从那里访问任何值或href

我知道XPath更方便,但我想先用DOM试试。 在XPath中,当遍历DOM时,我知道自己的位置。但是在这里,对于DOM,我想我不在我想要的循环中的那个位置。

像这样继续

$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('td') as $tag) {
    if ($tag->getAttribute('class') === 'myStyle') {
        foreach ($tag->getElementsByTagName('a') as $atag) {
            echo $atag->getAttribute('href');
        }

    }
}
输出:

URLa
URLb

当我接近所需结果时,我通常使用var\u dump或var\u export来查看如何获得它。我建议先做一个
var\u dump($link)
看看te结构是什么。空的…:-(另外,var_dump($links)为空。屏幕完全空白。如果从var_dump($table)开始,会发生什么?如何初始化dom?能否将其作为单独的代码字段添加到问题中?问题可能就在那里。Shankar Damodaran给出了正确答案。