【问题标题】:Get td values with loadHTML and DOMXPath使用 loadHTML 和 DOMXPath 获取 td 值
【发布时间】:2013-09-15 11:32:47
【问题描述】:

我正在尝试使用 loadHTML 和 DOMXPath 从表中获取 td 值,但即使没有错误,节点在“textContent”和“nodeValue”上总是返回空。

表 id 是“akas”,但表中没有其他内容具有 id 或类。

这是我的代码:

$xml = new DomDocument();
$xml->validateOnParse = true;
libxml_use_internal_errors(true);
$xml->loadHTML($data); //$data contains all the HTML

$xpath = new DOMXPath($xml);
$table = $xpath->query('//table[@id="akas"]')->item(0);

$rows = $table->getElementsByTagName("tr");

foreach($rows as $row)
{
  $cells = $row -> getElementsByTagName('td');
  foreach ($cells as $cell) print $cell->nodeValue;
}

没有错误,但我无法从节点获取任何信息,如果我执行 var_dump,每个属性都返回空,除了 [tagName] 和 [nodeName]。表格的“长度”返回正确的值(内部 tr 和/或 td 的数量)。

可能出了什么问题?任何人都可以对此有所了解吗?

【问题讨论】:

    标签: php html-table domdocument domxpath


    【解决方案1】:

    使用这个:

    $tds = $xpath->query('//table[@id="akas"]/*/td');
    foreach($tds as $td) {
        ... 
    }
    

    【讨论】:

    • 感谢您的帮助,不幸的是我得到了相同的结果:长度报告 44 个项目,但打印它们会使“textContent”和“nodeValue”为空。源头会不会有某种障碍?在这种情况下,我试图从这里获取翻译后的电影名称:imdb.com/title/tt1723121/releaseinfo
    【解决方案2】:

    我忘记在 curl 代码上打开 CURLOPT_RETURNTRANSFER 以获取 html,所以如果我执行 $data 的 var_dump html 就在那里,但如果我尝试对内容做任何事情,它总是返回空。 :P

    感谢您的帮助 hek2mgl。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      相关资源
      最近更新 更多