Ik heb een externe link met deze broncode:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
<div class="articleContent">TEKST TEKST TEKST</div>
<hr>
<table>
</table>
<hr>
<div class="articleContent">TEKST TEKST TEKST</div>
<hr>
<table>
</table>
<hr>
<div class="articleContent">TEKST TEKST TEKST</div>
<hr>
<table>
</table>
<hr>
<div class="articleContent">TEKST TEKST TEKST</div>
</body>
</html>

Nu wil ik met explode de tekst uit de divs ophalen, zodat ik ze in mijn database kan verwerken.

<?php
$link = file_get_contents("http:///link.html");

$div_1_1 = explode('<div class="articleContent">',$link);
$div_1_2 = explode("</div>", $div_1_1[1]);

$div_2_1 = explode('</div>',$div_link);
$div_2_2 = explode('<div class="articleContent">', $div_2_1[1]);
$div_2_3 = explode('</div>', $div_2_2[1]);

echo $div_1_2[0]; // div 1
echo $div_2_3[0]; // div 2

// div 3 en 4???
?>

Het lukt mij wel om de eerste en tweede div op te halen, maar vanaf de derde lukt het niet meer. Dat komt dus omdat alle divs exact hetzelfde ID hebben.

Iemand enig idee hoe ik teksten uit alle divs kan ophalen?
Probeer dit eens :

<?php
$link = file_get_contents("http://www.ergens.com/link.html");

preg_match_all("/(<div.*>(.+)<\/div>)+/", $link, $output_array);

echo '<pre>';
print_r($output_array);
echo '<pre>';
?>

Oefenen kan hier :

http://www.phpliveregex.com/

P.S. De divs hebben een class.

Adoptive Solution op 31/08/2016 17:42:38

Probeer dit eens :

<?php
$link = file_get_contents("http://www.ergens.com/link.html");

preg_match_all("/(<div.*>(.+)<\/div>)+/", $link, $output_array);

echo '<pre>';
print_r($output_array);
echo '<pre>';
?>

Oefenen kan hier :

http://www.phpliveregex.com/

P.S. De divs hebben een class.




Dit werkt bij mij niet goed.. Ik krijg ook alle teksten om de divs heen te zien. Ik wil alleen de teksten die in de divs staan, apart van elkaar als string.

Is er een oplossing waarmee ik het gewoon met explode kan doen? Ik wil de teksten onder elkaar, apart per string kunnen echo'en.

Dus:

echo $div1;
echo $div2;
echo $div3;
echo $div4;
In mijn optimisme ging ik ervan uit dat je ermee uit de voeten kon.

Resultaat is aan array.

Je haalt dan de teksten uit de array.

Omdat ik de vraag verwachtte, heb ik dit voor je bedacht (kan beter, maar het was een vluggertje) :

for ($row = 0; $row < count($output_array); $row++) {

	for ($col = 0; $col < count($output_array[$row]); $col++) {
  		if ($col == 2) {
  			echo "($col-$row) : ".$output_array[$col][$row]."<br />\n";
  		}
  	}

}


Dit :

$output_array[$col][$row]


moet je dan bewaren.

Effe oefenen voor een beter resultaat.
Als dit uit een externe bron komt, is het dan niet beter om gewoon om een andere manier van aanleveren van de informatie die je nodig hebt te vragen? Data rippen is niet bepaald toegestaan.
Ik kom er niet uit met de bovenstaande codes...
Hiers is een betere :

foreach ($output_array as $key => $value) {

//	echo "{$key} => {$value} \n ";
	if ($key == count($output_array) -1 ) {
		foreach ( $value as $sleutel => $waarde ) {
			//echo $sleutel . '<br>';
			//if ( $sleutel == (count($sleutel) -1) ) {
//				echo "{$sleutel} => {$waarde}<br>\n";
				echo "{$waarde}<br>\n";

			//}
		}
	}
}


And action!!

http://adoptive.esy.es/explode/
Werkt, maar nu echo't hij alleen de laatste div? Heh.. Ik heb nu dit:

$link = file_get_contents("http://www/link.html");
preg_match_all("/(<div.*>(.+)<\/div>)+/", $link, $output_array);

foreach ($output_array as $key => $value) {
//    echo "{$key} => {$value} \n ";
    if ($key == count($output_array) -1 ) {
        foreach ( $value as $sleutel => $waarde ) {
            //echo $sleutel . '<br>';
            //if ( $sleutel == (count($sleutel) -1) ) {
//                echo "{$sleutel} => {$waarde}<br>\n";
                echo "{$waarde}<br>\n";

            //}
        }
    }
}
Om welke site gaat het? Mogelijk zijn er daar betere manieren voor via een speciale API. Let er wel op dat kopieëren van data anders niet toegestaan is vanwege copyright en databankrecht.

Dus graag ben ik benieuwd wat precies de exacte bedoeling is.
Het gaat om .html bestanden die we via de mail aangeleverd krijgen, die wil ik automatisch laten uploaden op mijn server en vervolgens de data eruit lezen.
Zet zo'n aangeleverd bestand op de server en geef een link.

Kijken of het werkt.

Reageren