Adatok kinyerése HTML táblázatból
Sziasztok!
Próbálok html kódból részeket kiszedni...ezzel próbáltam:nagyon elakadtam, a végeredményként Számla2-t és Számla4-t kellene kiiratnom a sor végéig, de nem megy. pls help!!!
■ Próbálok html kódból részeket kiszedni...
<tr><td align="left"><span class="szoveg">Számla</span></td><td align="left"><span class="szoveg">10.08. - 10.08.</span></td><td align="right" nowrap="nowrap"><span class="szoveg">1</span></td><td align="right" nowrap="nowrap"><span class="szoveg">00:00:07</span></td><td align="left"><span class="szoveg">perc</span></td><td align="right" nowrap="nowrap"><span class="szoveg">24.00</span></td><td align="right" nowrap="nowrap"><span class="szoveg">20</span></td><td align="right" nowrap="nowrap"><span class="szoveg">2.80</span></td><td align="right" nowrap="nowrap"><span class="szoveg">0.56</span></td><td align="right" nowrap="nowrap"><span class="szoveg">3.36</span></td></tr>
<tr><td align="left"><span class="szoveg">Számla2</span></td><td align="left"><span class="szoveg">09.20. - 10.13.</span></td><td align="right" nowrap="nowrap"><span class="szoveg">15</span></td><td align="right" nowrap="nowrap"><span class="szoveg">00:24:40</span></td><td align="left"><span class="szoveg">perc</span></td><td align="right" nowrap="nowrap"><span class="szoveg">0.00</span></td><td align="right" nowrap="nowrap"><span class="szoveg">20</span></td><td align="right" nowrap="nowrap"><span class="szoveg">0.00</span></td><td align="right" nowrap="nowrap"><span class="szoveg">0.00</span></td><td align="right" nowrap="nowrap"><span class="szoveg">0.00</span></td></tr>
<tr><td align="left"><span class="szoveg">Számla3</span></td><td align="left"><span class="szoveg">10.08. - 10.08.</span></td><td align="right" nowrap="nowrap"><span class="szoveg">1</span></td><td align="right" nowrap="nowrap"><span class="szoveg">00:01:18</span></td><td align="left"><span class="szoveg">perc</span></td><td align="right" nowrap="nowrap"><span class="szoveg">24.00</span></td><td align="right" nowrap="nowrap"><span class="szoveg">20</span></td><td align="right" nowrap="nowrap"><span class="szoveg">31.20</span></td><td align="right" nowrap="nowrap"><span class="szoveg">6.24</span></td><td align="right" nowrap="nowrap"><span class="szoveg">37.44</span></td></tr>
<tr><td align="left"><span class="szoveg">Számla4</span></td><td align="left"><span class="szoveg">09.22. - 10.10.</span></td><td align="right" nowrap="nowrap"><span class="szoveg">6</span></td><td align="right" nowrap="nowrap"><span class="szoveg">00:13:47</span></td><td align="left"><span class="szoveg">perc</span></td><td align="right" nowrap="nowrap"><span class="szoveg">24.00</span></td><td align="right" nowrap="nowrap"><span class="szoveg">20</span></td><td align="right" nowrap="nowrap"><span class="szoveg">330.80</span></td><td align="right" nowrap="nowrap"><span class="szoveg">66.16</span></td><td align="right" nowrap="nowrap"><span class="szoveg">396.96</span></td></tr>
<?php
print"<table border=1 cellpadding=0 cellspacing=0 width=2000>";
$minta = 'Számla2';
$minta2 = 'Számla4';
$file=file('file.htm');
foreach($file as $seged) {
$seged2=split(" ",$seged);
foreach($seged2 as $s)
{
$t=split(" ",$s);
foreach($t as $s2)
{
if($s2==$minta)
{
$talal=true;
}
if(($talal) and(substr($s2,0,11)!=$minta) )
{
$szamlalo++;
if ($szamlalo==7)
{
$s2=str_replace("<br>","",$s2);
}
}
print $s2;
}
}
}
print"</table>";
?>
mi lenne a cél?
mit kéne csinálnia a programnak? beolvasod a file.htm-et, feldarabolod először egy szóközönként, majd két szóközönként és bizonyos feltételek együttállásánál lecseréled a <br> sztringet a nagy semmire. végül mindent kiírsz.
a problémák így első ránézésre:
- a szóközök mentén felosztás nem fog menni másodszor is. ha felosztod a sztringed szóközönként, utána nem fogsz dupla szóközt találni benne.
- a $talal változónak nincs kezdőértéke, de ha valamelyik ciklusmagban igazra állítanád akkor úgy is maradna végig. viszont ez nem fog megtörténni, mert $s2 soha nem lesz Számla2 értékű
- ugyanígy a substr($s2, 0, 11) sem fog soha megegyezni a Számla2 szöveggel
- a $minta2 változóra az inicializáláson kívül sehol sem hivatkozol
- a file.htm - amennyiben abból idéztél az elején - nem is tartalmaz <br> tag-et
szóval mit szeretnél elérni?
javítok
Az lenne a feladatom, hogy egy ilyen htm-ből ami sok Számla nevű sort tartalmaz kiemeljek egy párat, pl a Számla sort a Számla2 végéig és Számla4-et és azt irassam ki, csak nem tudom hogyan emeljem ki ezeket a sorokat. Ebben kérnék segítséget, mint látod nem vagyok egy profi programozó.
Csak egy tipp.
Vagyis, ha a $szamlak a tömb, akkor a
$szamlak[elso_span_tartalma][elso_ertek_megnevezese] = masodik_span_tartalma;
aztán
$szamlak[elso_span_tartalma][masodik_ertek_megnevezese] = harmadik_span_tartalma;
és így tovább.
Ha azt feltételezzük, hogy a $html változó már tartalmazza a táblázat sorait (a kívánt <tr></tr> összesség) akkor pl.: strip_tags($html, '<span>'); segítségével már csak a span-ok vannak. Aztán pl.: egy str_replace(" class=\"szoveg\"","",$html); és már csak egy explode kell.
De javaslom, inkább használj reguláris kifejezéseket, csak abban én suta vagyok! :)
s_volenszki
DOM