Beste,

De pagina is als volgt

<div>
<p></p>
<p></p>
<p></p>
</div>
<div>
<p></p>
<p></p>
<p></p>
</div>
<div>
<p></p>
<p></p>
<p></p>
</div>

Nou wil ik apart van elke div de paragrafen hebben, maar ik krijg alleen maar alles op een hoop.
Dus zeg maar als volgt

array('div', array('paragraaf','paragraaf','paragraaf'))
array('div', array('paragraaf','paragraaf','paragraaf'))
array('div', array('paragraaf','paragraaf','paragraaf'))


Ik probeer eerste de divs op te halen daarop weer een query uit te voeren, maar het geeft nog niet het gewenste resultaat.


<?php
$dom = new domDocument;
$dom->preserveWhiteSpace = false;
@$dom->loadHTML($data);
$xpath = new DOMXPath($dom);

foreach($xpath->query('//div[@class="standard"]') as $divs) {
	//echo '<p>' . trim($divs->nodeValue) . '</p>'.PHP_EOL;
	
	foreach($xpath->query('//p[normalize-space()]', $divs) as $p) {
		echo '<p>' . $p->nodeValue . '</p>' . PHP_EOL;
	}
	echo '<hr>';
?>

Op deze manier krijg ik alle divs, en dan pas de hr, en meerdere keren de zelfde data.

Kan iemand een schop in de goede richting geven hoe ik dit netjes krijg?
Zou je in je binnenste foreach-loop niet op een of andere manier verder moeten gaan met $divs in plaats van (opnieuw) met $xpath?
Dat probeer ik ook. Zie regel 10. Dit zou p uit de divs moeten halen.
Intussen al 100 verschillende manieren geprobeerd, met steeds het zelfde resultaat. Erg frustrerend.
regel 10 is precies gelijk aan regel 7

weliswaar met een ander criterium, maar er is geen reden gegeven waarom er niet naar ALLE <p>'s gezocht zou moeten worden in $divs
Is dat zo? De divs als extra parameter zou volgens een tutorial die ik vond wel moeten werken, maar de resultaten zeggen inderdaad van niet.

Ik heb het nu op een andere manier opgelost, niet de mooiste misschien, maar het werkt wel.
<?php
dom = new domDocument;
$dom->preserveWhiteSpace = false;
@$dom->loadHTML($data);
$xpath = new DOMXPath($dom);
$divs = $xpath->query('//div[@class="standard"][normalize-space()]');

for($i=1;$i<=$divs->length;$i++) {
foreach($xpath->query('//div[@class="standard"][' . $i . ']/p[normalize-space()]') as $p) {
echo '<p>' . $p->nodeValue . '</p>'.PHP_EOL;
}
}
?>
Mooiere betere oplossingen of ideeen zijn welkom.

Reageren