Autor Zpráva
PetrX
Profil *
Můžete mi prosím poradit jak přečtu první čtyři znaky z posledního řádku v souboru? Pro čtení bych zvolil funkci fgets, ale nevím jak to nastavit, aby to četlo z posledního řádku
MiSHAK
Profil
$radky = file("soubor");
$p4z = substr($radky[count($radky)], 0, 4);
PetrX
Profil *
Děkuji, to bylo přesně to co potřebuju
MiSHAK
Profil
Ono by to šlo řešit ala C přes funkci fgets, ale to by bylo na dva cykly a sest funkci.
nightfish
Profil
řešení jak navrhoval MiSHAK - je výhodné v případě, kdy žádáme nízkou paměťovou náročnost (varianta s file vám může zhučet na nedostatek paměti v případě práce s velkým souborem a nebo malým paměťovým limitem)

$fp = fopen("soubor.txt", "r");

$s = "";
while (!feof($fp)) {
$s = fgets($fp);
}
$vystup = substr($s, 0, 4);
fclose($fp);
Davex
Profil
nightfish
Ještě optimálnější by byla varianta s fseek od konce souboru a hledáním začátku posledního řádku. Což by bylo vhodné pro opravdu velké soubory.
if ($fp = fopen('soubor.txt', 'r')) {

if (fseek($fp, -4096, SEEK_END) < 0)
rewind($fp);

$s = fread($fp, 4096);
fclose($fp);

$pos = strrpos(substr($s, 0, -1), "\n");
$vystup = substr($s, $pos + 1, 4);
}

Skript funguje za předpokladu, že poslední řádka není delší než 4096 bytů.

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:

0