Простая итерация документа 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']");