Простая итерация документа DOM

У меня есть 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 внутри div, имеющего класс container,

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 и извлечь 3-й тег p.

Как я уже сказал, циклы необходимы.

3 ответа

Решение

Во время итерации я хочу получить текст из 3-го тега p

Пытаться:

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

Это должно вернуть все третье p во всех div внутри div с контейнером класса.

Просто попробуй

/html/body/div/div//p

Это должно вернуть только р-элементы XD

Возможно, вам придется запросить атрибуты: php xpath получить значение атрибута

 $xpath->query("/html/body/div[@class='container']");
Другие вопросы по тегам