Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedoston lukeminen vain osittain (PHP)

Dyer [25.01.2008 19:10:13]

#

Elikkä mulle tuli tällainen pieni ongelma tiedoston lukemisen kanssa. Tiedostossa kaikki_paikat on rivit:

01:Testi varaus
08:Toinen testi
12:Kolmas testi

Tarkoitus olisi lukea jokaisen rivin alusta 2 ensimmäistä merkkiä (01, 02 ja 12) Löysin täältä Ohjelmointiputkasta PHP oppaasta seuraavan tekstin:
"Funktio fgets lukee seuraavan rivin tiedostosta. Funktion toinen parametri on rivin maksimipituus."

Ja koodi siinä alla on tällainen:

<?php
$rivi = fgets($tt, 1024);
?>

Itse ainakin kuvittelen, että tuo 1024 on maksimi pituus, mitä $rivi muuttujaan kirjoitetaan. Saatan tietenkin olla väärässä ja todennäköisesti olenkin, koska tätä viestiä tänne kirjoitan. eli mun koodi näyttää tältä:

<?php
//avataan tiedosto lukutilassa
$tt2 = fopen("kaikki_paikat.txt", "r");

//nollataan rivinumerolaskuri
$i = 0;

//luetaan rivejä, kunnes tiedosto loppuu
while (!feof($tt2)) {

   //luetaan seuraava rivi muuttujaan
  //HUOM! paikkojen tulee olla [02:varaajan nimi] merkkisessä muodossa. esim 01:Testi Varaus jne. LUODAAN AUTOMAATTISESTI
   $varatut[$i] = fgets($tt2, 2);

   echo $varatut[$i];

   $i++;

}
fclose($tt2);
?>

Sivulle tulostuu:
01:Testi varaus 08:Toinen testi 12:Kolmas testi

Tietääkö joku, mikä on vikana, miksi sivulle tulostuu koko tiedostossa oleva rivi, eikä pelkästään tuo numero. Tai tietääkö joku, miten saisin tehtyä tuon eri tavalla?

folio [25.01.2008 19:17:32]

#

Ei tuolla manuaalissa kyllä mielestäni lue että pointteri siirtyy seuraavalle riville sen jälkeen kun ne kaks merkkiä on luettu :S

TsaTsaTsaa [25.01.2008 19:17:46]

#

$rivit = file("kaikki_paikat.txt"); // Tämä siis lukee koko tiedoston taulukkoon, niin että eka rivi on $rivit[0] jne..
$rivimaara = count($bannerit);

for ($i = 0 ; $i < $rivimaara ; ++$i)
{
  $rivi = explode(':', $rivit[$i]);
  // Ensimmäisellä kierroksella $rivi[0] = "01" ja $rivi[1] = "Testi varaus"
  echo $rivi[0];
}

Dyer [25.01.2008 19:40:02]

#

jaa... arvelinki et oon ymmärtäny jotain väärin :D

kitti teille. Sain toimimaan.

tsuriga [25.01.2008 20:32:18]

#

<?php
// Pakollinen one-lineri (jaettuna useammalle riville selkeyttämiseksi)
echo implode(
              '',
              array_map(
                         create_function(
                                          '$x',
                                          'return substr( $x, 0, 2 );'
                                        ),
                         file( 'paikat.txt' )
                       )
            );

?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta