[ makaze @ 02.06.2003. 20:40 ] @
ovako... imam jedan txt fajl koji liči ovako:

Code:
<!-- Start -->
<!-- 1 -->
<!-- no1 -->
<table width="100%" border="1" cellpadding="2" cellspacing="0" bordercolor="#333333" bgcolor="#C0C0C0" hspace="2" vspace="2">
  <tr bgcolor="#000000"> 
    <td bgcolor="#333333" class="recT"> <p align="left"><span class="normalTXT"><b> 
        <font face="Arial, Helvetica, sans-serif" size="2">Kittie - &quot;Spit&quot;<br>
        </font></b><font face="Arial, Helvetica, sans-serif" size="2">(NG/Atermis 
        Records, 1999)</font></span></p></td>
  </tr>


i sada, treba da ga učitam i čitam red po red... i da vidim... ako je jedan red jednak "<!-- Start -->" onda da mi uradi nesto....

ali ako idem ovako:

Code:

$file=file("x.html");
$counter=0;

foreach($file as $line_num)
{
    $line[$counter]=$line_num;
    $counter++;
}


pa

Code:

for ($i=0; $i<$counter; $i++)
{
        if ($line[$i]=='<--! 15demo -->')
        {
            ........
        }
}


ali nema sanse da mi radi komparaciju...???!
i kada idem strcmp($line[$i], "<--! 15demo -->") ne moze
da li neko zna rijesenje???
[ CONFIQ @ 02.06.2003. 20:59 ] @
$fd = fopen("x.html", "r");
while($sadrzaj=fgets($fd,1024)) {
if ($sadrzaj=='<--! 15demo -->'){
#uradi to i to
}
}


~Say FiQ
[ makaze @ 02.06.2003. 21:20 ] @
ne može...
[ makaze @ 02.06.2003. 21:47 ] @
treba da pročitam jedan red... evo ovako ako je lakše

Code:

--
-16-
disketa
cdrom
--
-17-
bla
bla
--
-16-
kompjuter
desktop
--


i trebam ovo...
čitam fajl, red po red... i svaki red gledam da li je jednak "-16-"... ako je red jednak "-16-" onda čitam ostale redove, dok god ne dođe do "--"

kužiš?

faktički da idem ovako (u speudokodu)

Code:

for (sve redove u fajlul, od pocetka do kraja, nije bitno koliko ih ima)
{
  if RED = "-16-" then
  {
       while ( RED != "--")
       {
            print RED + " "
            go to next RED
       }
  }
}


da bi dobio:

Code:
disketa cdrom kompjuter desktop
[ Goran Rakić @ 02.06.2003. 23:17 ] @
koristi prednosti postojanja XML biblioteka. Što se problema tiče ispitaj gde se šeta pokazivač u datoteci pa otkrij dokle je stigao.
[ tOwk @ 02.06.2003. 23:51 ] @
A šta mislite na jedno „$red=chop($red)“ pre poređenja?


[Ovu poruku je menjao tOwk dana 04.06.2003. u 16:15 GMT]
[ bOkIcA @ 04.06.2003. 01:35 ] @
trt.txt
Code:
--
-16-
disketa
cdrom
--
-17-
bla
bla
--
-16-
kompjuter
desktop
--


kod
Code:
<?php
$file = fopen ("trt.txt", "r");
$counter = 0;
$citam = false;

while (!feof ($file)) {

   $line = fgets($file, 4096);
   
   // sledeci red izbacuje "nevidljive" new line karaktere
   // (verovatno razlog tvog problema)
   $line = ereg_replace("(\r\n|\n|\r)", "", $line);  
   
   if ($line=="-16-")
       $citam = true;
   if ($line=="--")
       $citam = false;
   
   if ($citam && ($line != "-16-")) {
       $procitano[$counter] = $line;
       $counter++;
   }
   
}
fclose ($file);

print_r($procitano);
?>


ovo si trazio
Code:
Array
(
    [0] => disketa
    [1] => cdrom
    [2] => kompjuter
    [3] => desktop
)
[ tOwk @ 04.06.2003. 15:53 ] @
Citat:
bOkIcA:
Code:

   // sledeci red izbacuje "nevidljive" new line karaktere
   // (verovatno razlog tvog problema)
   $line = ereg_replace("(\r\n|\n|\r)", "", $line);  


Kao prvo, fgets() čita sve do prvog „\n“. U tom slučaju tvoje rešenje je nepotrebno sporo, i ja bih to zamenio (ako bih baš želeo da koristim ereg_replace()) sa:
Code:
   $line = ereg_replace("(\r\n|\n|\r)$", "", $line);


Ovo će tražiti to samo na kraju reda. Međutim, mnogo efikasnije rešenje je već pomenuti chop():
Code:
   $line = chop($line);

i ne znam zašto ga ne koristiti kad je upravo tome i namenjen.
[ bOkIcA @ 06.06.2003. 06:12 ] @
Code:
$line = rtrim($line);

jo ;-)
[ Zoran Rašković @ 06.06.2003. 12:47 ] @
U manualu kaže da je chop() isto što i rtrim().
[ mikikg @ 15.06.2003. 03:24 ] @
Predlazem da taj txt fajl formatiras na principu "podaci razmaknuti zarezom" ili CSV (Comma Separated Values).

Mozes da koristis PHP naredbu
Code:
fgetcsv()
.

Ova naredba radi bas ono sto ti je potrebno, otvara fajl, cita linije, rasclanjuje podatke koji su odvojeni "delimiterom" (obicno zares ili tacka zarez) i to sve posle smesti u indeksirani niz koji je posle jednostavno koristiti.

Tvoj txt fajl bi imao otprilike ovakav oblik:

Code:

16;disketa;cdrom;
17;bla;bla;
16;kompjuter;desktop