【问题标题】:Simple HTML DOM parsing table简单的 HTML DOM 解析表
【发布时间】:2013-08-15 06:57:25
【问题描述】:
<table class="mainTable" cellpadding="0" cellspacing="0" align="center">
    <tr>
        <td class="day">test 1</td>
        <td data-info="" class=" c"></td>
        <td data-info="91" class="widgets c91">data 1</td>
        <td data-info="" class=" c"></td>
        <td data-info="109" class="widgets c109">data 2</td>
        <td data-info="" class=" c"></td>
        <td data-info="126" class="widgets c126">data 3</td>
    </tr>
    <tr>
        <td class="day">test 2</td>
        <td data-info="83" class="widgets c83">data 4<div class="triangle"></div></td>
        <td data-info="" class=" c"></td>
        <td data-info="100" class="widgets c100">data 5<div class="triangle"></div></td>
        <td data-info="" class=" c"></td>
        <td data-info="118" class="widgets c118">data 6<div class="triangle"></div></td>
        <td data-info="" class=" c"></td>
    </tr>
    <tr>
        <td class="day">test 3</td>
        <td data-info="84" class="widgets c84">data 7</td>
        <td data-info="92" class="widgets c92">data 8</td>
        <td data-info="101" class="widgets c101">data 9</td>
        <td data-info="110" class="widgets c110">data 10</td>
        <td data-info="119" class="widgets c119">data 11</td>
        <td data-info="127" class="widgets c127">data 12</td>
    </tr>
</table>

我正在使用简单的 html dom 生成一个包含表中项目的数组。 我希望能够识别 td 元素是否具有 div 类“三角形”并将其输出到数组。

【问题讨论】:

    标签: php simple-html-dom


    【解决方案1】:

    这是一个您可以尝试的工作示例:

    <?php
    $text = '<table class="mainTable" cellpadding="0" cellspacing="0" align="center">
        <tr>
            <td class="day">test 1</td>
            <td data-info="" class=" c"></td>
            <td data-info="91" class="widgets c91">data 1</td>
            <td data-info="" class=" c"></td>
            <td data-info="109" class="widgets c109">data 2</td>
            <td data-info="" class=" c"></td>
            <td data-info="126" class="widgets c126">data 3</td>
        </tr>
        <tr>
            <td class="day">test 2</td>
            <td data-info="83" class="widgets c83">data 4<div class="triangle"></div></td>
            <td data-info="" class=" c"></td>
            <td data-info="100" class="widgets c100">data 5<div class="triangle"></div></td>
            <td data-info="" class=" c"></td>
            <td data-info="118" class="widgets c118">data 6<div class="triangle"></div></td>
            <td data-info="" class=" c"></td>
        </tr>
        <tr>
            <td class="day">test 3</td>
            <td data-info="84" class="widgets c84">data 7</td>
            <td data-info="92" class="widgets c92">data 8</td>
            <td data-info="101" class="widgets c101">data 9</td>
            <td data-info="110" class="widgets c110">data 10</td>
            <td data-info="119" class="widgets c119">data 11</td>
            <td data-info="127" class="widgets c127">data 12</td>
        </tr>
    </table>';
    
    echo  "<div>Original Text: <xmp>$text</xmp></div>";
    
    $html = str_get_html($text);
    
    $divArray = $html->find('div');
    
    // if find exists
    if ($divArray) {
    
      echo '<br>Find function found '. count($divArray) . ' results: ';
    
      foreach($divArray as $key=>$div){
        echo '<br>'.$key . ': ' . $div->tag . ' with class = ' . $div->class;
      }
    }
    else
      echo "Find() fails !";
    ?>
    

    由于您的输入 html 仅包含类 triangle 的 div 标签,您可以仅搜索 div 或类 triangle 的 div...

    但是,如果您有更多带有其他类或没有任何类的 div 标签,那么您绝对必须搜索 div.triangle 以获得正确的结果。

    更多详情见:

    【讨论】:

      【解决方案2】:

      您可以在您迭代的元素中调用find 方法。这是一个简单的例子。

      foreach($html->find('td') as $element) {
          if ($element->find('div')) {
              echo "found div";
          }
      }
      

      【讨论】:

        【解决方案3】:

        在浏览 http://simplehtmldom.sourceforge.net/manual.htm 的 Simple DOM Parser 文档时,我发现一个简单的方法可以找到所有包含 div 类为“triangle”的 td:

        foreach($html->find('div.triangle') as $element){
           echo $element->parent() . '<br>';
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-18
          • 1970-01-01
          • 1970-01-01
          • 2012-01-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多