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

php获取dom html元素

  •  0
  • Trombone0904  · 技术社区  · 8 年前

    我有一些PHP代码,可以从另一个文件返回HTML内容:

    $html = file_get_contents('myFile.html');
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    

    这是$html内容的一部分:

    <table class="content_table">
       <tbody>
          <tr>
             <td>Value1</td>
             <td>Value2</td>
             <td>Value3</td>
          </tr>
          <tr>
             <td>Value1</td>
             <td>Value2</td>
             <td>Value3</td>
          </tr>
       </tbody>                                               
    </table>
    

    我的问题:
    如何获取 <td> table标记的类“content\u table”在哪里?

    1 回复  |  直到 5 年前
        1
  •  0
  •   marcell    8 年前

    以下查询查找 table 具有 content_table 类,然后提取 td it中的值:

    <?php
    
    $html = '<table class="content_table">
    <tbody>
       <tr>
          <td>Value1</td>
          <td>Value2</td>
          <td>Value3</td>
       </tr>
       <tr>
          <td>Value1</td>
          <td>Value2</td>
          <td>Value3</td>
       </tr>
    </tbody>                                               
    </table>';
    $dom = new DOMDocument('1.0', 'UTF-8');
    $dom->loadHTML($html);
    $xpath = new DOMXPath($dom);
    
    $data = [];
    foreach($xpath->query('//table[@class="content_table"]') as $table) {
        foreach($table->getElementsByTagName('td') as $td) {
            $data[] = $td->nodeValue;
        }
    }
    
    print_r($data);
    

    或者如果你只需要 td公司 具有 content\u表格 类,然后执行以下任务:

    foreach($xpath->query('//td[@class="content_table"]') as $td) {
        $data[] = $td->nodeValue;
    }
    

    html示例:

    $html = '<table class="content_table">
    <tbody>
       <tr>
          <td>Value1</td>
          <td class="content_table">Value2</td>
          <td>Value3</td>
       </tr>
       <tr>
          <td>Value1</td>
          <td class="content_table">Value2</td>
          <td>Value3</td>
       </tr>
    </tbody>                                               
    </table>';