blackroger
23.12.2008, 15:45:35
Funkcja fgets pobiera (powiedzmy z pliku tekstowego) po jednej linii i ustawia wskaźnik na początku drugiej. Mam pytanie jak zrobić, żeby powiedzmy po pobraniu linii, sprawdzeniu jakiegoś tam warunku i jeżeli ten warunek będzie niespełniony ustawić wskaźnik jeszcze raz na początku tej samej linii? Wiem, że są te wszystkie rewindy i fseeki ale mi chodzi o to czy jest jakaś w miarę prosta możliwość na cofnięcie wskaźnika o jeden wiersz(taki fgets wstecz)? Tylko nie chce rozwiązań w stylu zliczania znaków w linii i potem odczytywania ich od początku.
erix
23.12.2008, 16:00:09
Cytat
Wiem, że są te wszystkie rewindy i fseeki ale mi chodzi o to czy jest jakaś w miarę prosta możliwość na cofnięcie wskaźnika o jeden wiersz(taki fgets wstecz)?
A możesz powiedzieć, w jakim celu chcesz to zrobić?
Najprościej IMHO użyć przed
fgets" title="Zobacz w manualu PHP" target="_manual wartości zwracanej przez
ftell" title="Zobacz w manualu PHP" target="_manual. Potem zapisaną w zmiennej wartość ustawiasz via
fseek" title="Zobacz w manualu PHP" target="_manual.
blinki
23.12.2008, 17:05:27
albo proscie na chlopski rozum

Kod
<?
$fp=fopen("jakisplik.txt", "r");
fget($fp);
if(warunek jest spelniony)
echo "jedziemy dalej";
else
fclose($fp)
i cos tam dalej pomysl, moze nad tym
?>
ultra_18
23.12.2008, 20:15:09
Jak dla mnie prościej bedzie użyc funkcji
http://pl.php.net/file ponieważ zapisuje plik do tablicy co ułatwia zadania ponieważ w przypadku spełnienia warunku cofany jest indeks do tyłu co w połaczaniu z przesuwająca sie pełtlą o 1 do przodu daje tą sama linijkę
<?php
$plik = 'plik.txt';
for($i=0;$i<count($tresc);$i++){
if(warunek ... ){
$i--;
}
}
?>