【问题标题】:Simple dom document iteration简单的dom文档迭代
【发布时间】:2016-04-27 19:18:25
【问题描述】:

我有一个 HTML:

 <html>
   <body>
      <div class="somethingunneccessary"></div>
      <div class="container">
         <div>
            <p>text1</p>
            <p>text2</p>
            <p>text3</p>
         </div>
         <div>
            <p>text4/p>
            <p>text5</p>
            <p>text6</p>
         </div>
         <div>
            <p>text7</p>
            <p>text8</p>
            <p>text9</p>
         </div>
         <div>
            <p>text10</p>
            <p>text11</p>
            <p>text12</p>
         </div>
         <div>
            <p>text13</p>
            <p>text14</p>
            <p>text15</p>
         </div>
      </div>
   </body>
 </html>

我想要完成的是:

1./ 遍历 div 中具有 container 类的 div 元素。

2./ 在迭代过程中,我想从第 3 个p tag 获取文本。

循环部分是必不可少的,而不是仅仅自己切出 p 标签

我已经完成了一些代码,但它不做循环:

$doc=new DOMDocument(); 
$doc->loadHTML($htmlsource);
$xpath = new DOMXpath($doc);
$commentxpath = $xpath->query("/html/body/div[2]/div[5]/p[3]");
$commentdata = $commentxpath->item(0)->nodeValue;

我如何遍历每个内部 div 元素并提取第三个 p 标签

就像我说的,循环是必不可少的。

【问题讨论】:

  • 您是否尝试过使用您的语言使用的任何机制来迭代对象?
  • @IgnacioVazquez-Abrams 这就是我需要帮助的地方。正在调整脚本以迭代容器 div 内部 div 元素
  • 那么你的意思是你不知道你的语言是如何迭代的?
  • 你想每 3p 吃一次吗?
  • @splash58 是的,这就是迭代具有类容器的 div 中的 div 元素并提取第三个 p 标签文本的目标

标签: xpath domdocument


【解决方案1】:

在迭代过程中,我想从第三个 p 标签中获取文本

试试:

"//div[@class='container']/div/p[3]"

这应该返回带有类容器的 div 内所有 div 中的所有第三个 p。

【讨论】:

  • 这很好用。我还有一个问题。如果我想要每个 div 中其他 p 元素的值怎么办?如何更改此查询以从 div 获取所有 p 标签
  • 你能举一个具体的例子来遍历 div 元素并将每个 p 元素存储到一个多维数组中吗?
  • 我现在不是你要的。问题是如何在 php 中对返回的 noteset 进行循环?
  • 是的,这就是我要找的。​​span>
  • foreach($commentxpath as $node) { $p[] = $node-&gt;nodeValue; }?
【解决方案2】:

您可能需要查询属性:php xpath get attribute value

 $xpath->query("/html/body/div[@class='container']");

【讨论】:

    【解决方案3】:

    试试吧

    /html/body/div/div//p
    

    应该只返回 p 个元素 XD

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 2011-10-27
      • 1970-01-01
      • 2011-05-25
      • 2012-11-06
      • 2023-04-01
      • 1970-01-01
      • 2013-05-27
      • 1970-01-01
      相关资源
      最近更新 更多