代码之家  ›  专栏  ›  技术社区  ›  Jim

我正在使用简单的HTML从表中提取数据,需要帮助

php
  •  1
  • Jim  · 技术社区  · 16 年前

    对不起,那些可怜的冠军们,但我大吃一惊。我有一张这样的桌子:

    <table class="gsborder" cellspacing="0" cellpadding="2" rules="cols" border="1" id="d00">
            <tr class="gridItem">
                    <td>Code</td><td>0adf</td>
            </tr><tr class="AltItem">
                    <td>CompanyName</td><td>Some Company</td>
            </tr><tr class="Item">
                    <td>Owner</td><td>Jim Jim</td>
            </tr><tr class="AltItem">
                    <td>DivisionName</td><td> </td>
            </tr><tr class="Item">
                    <td>AddressLine1</td><td>9314 W. SPRING ST.</td>
            </tr>
    </table>
    

    我正在使用以下代码获取数据:

      $foo = $html->getElementById("d00")->childNodes(1)->childNodes(1);
    

    但问题是我得到了两个 <td></td> 用我的数据标记。有没有一种方法可以只获取没有标签的原始数据?

    另外,这是从这个表中获取数据的正确方法吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Waleed Amjad    16 年前

    使用条带标记获取原始文本。

    http://us.php.net/manual/en/function.strip-tags.php

    所以:

    $foo = strip_tags($html->getElementById("d00")->childNodes(1)->childNodes(1));
    
        2
  •  3
  •   Andy    16 年前

    尝试使用:

    $foo = $html->getElementById("d00")->childNodes(1)->childNodes(1)->plaintext;
    

    或内部文本。

    // Example
    $html = str_get_html("<div>foo <b>bar</b></div>"); 
    $e = $html->find("div", 0);
    
    echo $e->tag; // Returns: " div"
    echo $e->outertext; // Returns: " <div>foo <b>bar</b></div>"
    echo $e->innertext; // Returns: " foo <b>bar</b>"
    echo $e->plaintext; // Returns: " foo bar"
    

    取自: http://simplehtmldom.sourceforge.net/manual.htm

    根据经验,无论您使用的是什么样的DOM API,一旦找到了您感兴趣从中获取数据的元素,访问它们包含的文本节点就需要做更多的工作。

    推荐文章