Bardzo dziękuję za zainteresowanie tematem.
Aktualnie stanąłem na:
<?php
//pobieram wszystkie tabele
if(preg_match_all("#<table[^>]*?>(.*?)</table>#si",$page,$wynik)){
foreach($wynik[1] as $i => $klasa){
//pobieram zawartość znacznika p o klasie klasa2 z tabeli
if(preg_match_all('#<p class="klasa2">(.*?)</p>#si',$wynik[1][$i],$wynik3)){
foreach($wynik3[1] as $i3 => $klasa3){
echo $wynik3[1][$i3];
}
}
//pobieram z tabeli zawartość znacznika h3 (jest to znacznik a który wyświetlam)
if(preg_match_all("#<h3[^>]*?>(.*?)</h3>#si",$wynik[1][$i],$wynik2)){
foreach($wynik2[1] as $i2 => $klasa2){
echo $wynik2[1][$i2]);
}
}
}
}
?>
Spróbowałem porwać się na
$document = new DOMDocument();
$document->loadHTML($code);
Jednak nie działa mi opcja:
$document->getElementByClassName('klasa')
oraz
$document->find(div[class*=klasa3])
Pobieranie pojedynczych elementów typu class="abc" jest do zrealizowania
inaczej sprawa się ma z elementami typu:
<div class="abc xyz " >.....</div>
...
<div class="abc ">.....</div>
chcę np pobrać div xyz i niestety nie jest to możliwe
if($document->getAttritube('class')==='xyz')
czasami znajdują się spacje między nazwami klas itd itp.
Więc chyba pozostanę przy preg_match_all. Czy jest możliwe zoptymalizowanie tego co podałem na początku ? trochę muli strona jak się wykonuje kilka takich pętli na stronie.
próbowałem odchudzić skalpowany tekst:
strip_tags($strona,'<table><p><h3><a>');
jednak usuwa to tylko znaczniki