Autor Zpráva
kordy
Profil
Dobrý večer potřeboval bych jak název napovídá načíst soubor od x řádku do do y řádku :)
Něco už jsem hledal a našel vypořádal jsem se teda s problémem jak začít od určitého řádku, ale na způsob jak načíst např do řádku 100 jsem nepřišel. Prolétli mi hlavou myšlenky o složitých funkcích, ale předpokládám, že to jde jistě jednodušeji. Tady je to co jsem již "skopíroval" :D

$radky = array_slice(file('text.txt'), 3);
Taps
Profil
kordy:
co takto ?
$soubor=file('text.txt');
$i=0;
foreach($soubor as $s){
if($i<=100){
echo $s;
}
$i++;
}
kordy
Profil
Děkuji, v tuto chvíli mě nenapadá jak to dohromady skloubit....
Ráno je moudřejší večera určitě na to přijdu :D


Fajn docvaklo mi to o něco dřív než sem čekal :D

takže pro ty co to hledají a nechce se jim myslet vypadá hotovej kód takhle:

<?php
$soubor= array_slice(file('text.txt'), 3);
$i=0;
foreach($soubor as $s){
if($i<=10)
{
echo $s;
}
$i++;
}

kde 3 je řádek od kterého se začíná načítat a 10 je množství načtených řádků od toho 3. ;)
user243
Profil
a není hezčí použít for()?
Alphard
Profil
Pro malé soubory ano, ale kdyby se s tím měl procházet třeba několika megový log, raději použít fgets() a nenačítat vše najednou do paměti.
I s použitím file() by byl lepší for (user243 [#4]), uvedená konstrukce se mi zdá naprosto otřesná. Na začátek zbytečná transformace pole, pak vypsání užitečných dat a nakonec zcela neužitečné iterace, kdyby tam byl aspoň break :-)
Davex
Profil
Pro velké soubory se hodí tento skript s minimální spotřebou paměti:
<?php
  $od = 10;
  $kolik = 5;
  $f = new SplFileObject("text.txt");
  $f->seek($od);
  while (!$f->eof() && $kolik--) {
    echo $f->current();
    $f->next();
  }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: