1

我是 DOM 文档的新手。我有这个 html:

    <tr class="calendar_row" data-eventid="39657">
        <td class="alt1 eventDate smallfont" align="center">Sun<div class="eventday_multiple">Dec 9</div></td>
        <td class="alt1 smallfont" align="center">3:34am</td>
        <td class="alt1 smallfont" align="center">USD</td>
    </tr>

    <tr class="calendar_row" data-eventid="39658">
        <td class="alt1 eventDate smallfont" align="center">Sun<div class="eventday_multiple">Dec 10</div></td>
        <td class="alt1 smallfont" align="center">5:14am</td>
        <td class="alt1 smallfont" align="center">EUR</td>
    </tr>

我正在尝试使用以下代码首先获取 tr 中的内容:

    $ret = array();
    libxml_use_internal_errors(true); 
    $doc = new DOMDocument();
    $doc->loadHTML($html);
    //$doc->saveHTMLFile('textbox.php');

    $text = $doc->getElementsByTagName('tr');
    foreach ($text as $tag){
        $ret[] = $doc->saveHtml($tag); 
        echo $doc->saveHtml($tag); 
    }

我不知道为什么要回显的值是整个文档而不是 tr 中的值..

其次,我还想获取 td 标签之间的值,例如 5:14 AM、EUR 等。但我不知道该怎么做。

请原谅菜鸟问题..

最好的祝福

4

2 回答 2

3
$doc = new DOMDocument();
$doc ->loadHTML("$html");
$tables = $doc->getElementsByTagName('table');
$table = $tables->item(0);//takes the first table in dom

foreach ($table->childNodes as $td) {
  if ($td->nodeName == 'td') {
    echo $td->nodeValue, "\n";
  }
}
于 2012-12-17T04:36:08.460 回答
1

传递一个元素来saveHtml生成元素outerHTML而不是它的innerHTML,所以你得到它的标签属性和它的所有内容。当然你需要运行 PHP>=5.3.6 。

td 之间的值可以通过问题获得$td->firstChild->nodeValue;或仅在$td->textContent;哪里获得。$td<td>

于 2012-12-17T04:32:32.827 回答