首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML DOM文档解析

HTML DOM文档解析
EN

Stack Overflow用户
提问于 2012-12-17 12:18:50
回答 2查看 1.7K关注 0票数 1

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

代码语言:javascript
复制
    <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中的内容:

代码语言:javascript
复制
    $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等,但我不知道如何做到这一点。

请原谅新手的问题..

诚挚的问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-17 12:36:08

代码语言:javascript
复制
$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";
  }
}
票数 3
EN

Stack Overflow用户

发布于 2012-12-17 12:32:33

将一个元素传递给saveHtml会生成元素outerHTML,而不是它的innerHTML,因此您可以获得它的标签属性和所有内容。当然,您需要运行PHP>=5.3.6。

td之间的值可以通过$td->firstChild->nodeValue;或仅通过$td->textContent;获得,其中$td是所讨论的<td>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13908212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档