konto usunięte
Temat: [php][pobieranie tekstu z html]
Mam za zadanie pobrać z pliku html o ścisłej i powtarzającej się strukturze kodu dane dotyczące ilości dostępnej (ze znacznika <td class="center">5</td> gdzie 5 oznacza ilość dostępna).Mój kod powinien robić to tak:
1. odnajduje string CDATA
2. zwraca wartość wiersza o numerze pomniejszonym o 3
Niestety w teoria i praktyka się mijają i program nie zachowuje się jak trzeba:
1. odnajduje tylko niektóre stringi CDATA (a zawsze musi być 25)
2. gdy odejmę nr wiersza -3 to dostaję nie to co trzeba (wartość </td>, więc program odejmuje -2 (wtedy tylko działa)
Gdzie w kodzie php robię błąd? Z góry dziękuję za pomoc.
------------------------------------------------------------
dokument: http://republika.pl/pawlik52/wynik4.htm (wyciąłem niektóre niepotrzebne dane z nagłówków)
------------------------------------------------------------
Wycięty kawałek kodu html z powyższego dokumentu:
</td>
<td class="center">5</td>
<td class="center">
<script type="text/javascript">
//<![CDATA[
------------------------------------------------------------
Kod PHP:
<?php
$filename = 'http://republika.pl/pawlik52/wynik4.htm';
$handle = @fopen($filename, "r");
$i=1;
$j=0;
$needle = "CDATA";
while(!feof($handle)) { //PYTANIE 1: dlaczego pokazuje tylko kilka wartości (tu:14) chociaż zawsze powinno pokazywać 25?
$buffer = fgets($handle, 4096);
$buffer2[$j] = fgets($handle, 4096);
$nr = stripos($buffer, $needle);
if($nr!=0) {
echo $i." ";
//PYTANIE 2: dlaczego pokazuje żądaną wartość tylko wtedy, gdy $buffer2[$j-2], a nie gdy $buffer2[$j-3]?
echo "Ilosc od: ".($buffer2[$j-2])."<br>";
$i++;
}
$j++;
}
fclose($handle);
?>
------------------------------------------------------------
Wynik błędnego kodu (powinien zwracać 25 linii):
1 Ilosc od: pow. 20
2 Ilosc od: 2
3 Ilosc od: 20
4 Ilosc od: 1
5 Ilosc od: 10
6 Ilosc od: 4
7 Ilosc od: 7
8 Ilosc od: 1
9 Ilosc od: pow. 20
10 Ilosc od: pow. 20
11 Ilosc od: 8
12 Ilosc od: pow. 20
13 Ilosc od: pow. 20
14 Ilosc od: pow. 20