如何找到具有特定值的 h3 标签



好吧,我有一个具有以下结构的HTML文件:

<h3>Heading 1</h3>
  <table>
   <!-- contains a <thead> and <tbody> which also cointain several columns/lines-->
  </table>
<h3>Heading 2</h3>
  <table>
   <!-- contains a <thead> and <tbody> which also cointain several columns/lines-->
  </table>

我只想得到第一个表及其所有内容。所以我将加载 HTML 文件

<?php 
  $dom = new DOMDocument();
  libxml_use_internal_errors(true);
  $dom->loadHTML(file_get_contents('http://www.example.com'));
  libxml_clear_errors();
?>

所有表都具有相同的类,也没有特定的 ID。这就是为什么我能想到的唯一方法是抓住值为"标题 1"的 h3 标签。我已经找到了这个,它对我来说效果很好。(考虑到可以添加其他表格和标题的事实会使解决方案变得不利(
如何获取值为"标题 1"的 h3 标签? + 如何选择下表?

编辑

#1:我无法访问HTML文件,所以我无法编辑它。
编辑#2:我的解决方案(感谢马丁·亨里克森(现在是:

<?php
    $doc = new DOMDocument(1.0);
    libxml_use_internal_errors(true);
    $doc->loadHTML(file_get_contents('http://example.com'));
    libxml_clear_errors();
    foreach($doc->getElementsByTagName('h3') as $element){
      if($element->nodeValue == 'exampleString')
        $table = $element->nextSibling->nextSibling;
        $innerHTML= '';
        $children = $table->childNodes;
        foreach ($children as $child) {
          $innerHTML .= $child->ownerDocument->saveXML( $child );
        }
        echo $innerHTML;
        file_put_contents("test.xml", $innerHTML);
    }
  ?>
您可以使用类

在HTML中找到任何标签simple_html_dom.php您可以从此链接下载此文件 https://sourceforge.net/projects/simplehtmldom/?source=typ_redirect

<?php
include_once('simple_html_dom.php');
$htm  = "**YOUR HTML CODE**";
$html = str_get_html($htm);
$h3_tag = $html->find("<h3>",0)->innertext;
echo "HTML code in h3 tag"; 
print_r($h3_tag);
?>

您可以提取标签h3的所有DomElements,并通过访问nodeValue来检查它所包含的值。找到 h3 标记后,可以通过 nextSibling 来选择 DomTree 中的下一个元素。

foreach($dom->getElementsByTagName('h3') as $element)
{
    if($element->nodeValue == 'Heading 1')
        $table = $element->nextSibling;
}

相关内容

  • 没有找到相关文章

最新更新