Fájlpozíció-jelző, azaz mutató

 

Teszteléshez, jegyzettömb programunkkal, hozzunk létre egy szoveg-fix elnevezésű, és TXT kiterjesztésű fájlt, ugyan azon mappába, melybe a php fájlok is lesznek
A szoveg_fix.txt fájlunkba, írjuk be a következő sorokat, és mentés után zárjuk is be.


Egy ABCDE,Kettő ABC,Három ABC,Négy ABCD,Öt ABCDEF,Hat ABCDE,Hét ABCDE,Nyolc ABC,Kilenc AB,Tíz ABCDE,
<b>Ez a második szövegsor,</b> ez a fájl, teszt szöveget tartalmaz.
<b>Ez a harmadik szövegsor.</b> Az első sorba írt szövegek hossza vesszőtől-vesszőig, betűk+szóköz+vessző = 10 stringet, azaz karakterláncot tartalmaz.
<b>Ez a negyedik szövegsor.</b> A szövegsorba, tetszőleges HTML - jelölőelemeket is beírhatunk.<br /> Ez a szövegsor is, a negyedik szövegsorhoz tartozik, mert a szövegsor írásakor, nem ütöttük le az ENTER billentyűt, csak eléja helyeztünk egy sorlezásó utasítást.

Fájlpozíció-jelző, azaz mutató mozgatása.

Az fseek() függvénnyel előre.

Általunk meghatározott értékkel előre, azaz beljebb mozgatja a fájlpozíció-jelzőt, azaz mutatót.

Mozgatás fseek() függvénnyel.
<?php
$mf= fopen("szoveg_fix.txt", "r");
fseek($mf,4);   // Tartalmi rész beolvasásának, kezdő pozícióját határozzuk meg.

$karakter= fgetc($mf); // Az fgetc() függvény, a karakterláncból egyetlen karaktert olvas be, jelen esetben a 5-ik karaktert.
echo $karakter;

fclose($mf);  //Lezárjuk a megnyított fájlt.
?>
Programunk eredménye:

A
A rewind() függvénnyel vissza.

Vissza mozgatja a fájlpozíció-jelzőt, azaz mutatót, a tartalom elejére (0-ik pozícióba).

Mozgatás rewind() függvénnyel.
<?php
$mf= fopen("szoveg_fix.txt", "r");
fseek($mf,60);   // Tartalmi rész beolvasásának kezdő pozícióját, a 60-ik karakterlánc mögé helyezzük.

$karakter= fgetc($mf); // Az fgetc() függvény, a karakterláncból egyetlen karaktert olvas be, jelen esetben a 61-ik karaktert.
echo $karakter;

rewind($mf);  // rewind() függvény, a fájlpozíció-mutatót, visszaállítja a fájl elejére.

$karakter= fgetc($mf); // Fájlpozíció-mutatót visszaállítottuk, így az első karaktert írathatjuk ki.
echo $karakter;

rewind($mf);       // Fájlpozíció-mutatót, ismét visszaállítjuk a fájl elejére.
fseek($mf,14);  // Fájlpozíció-mutató pozícióját most, a 14-ik karakterlánc mögé helyezzük.
$karakter= fgetc($mf); // A karakterláncból egyetlen karaktert olvasunk be, jelen esetben a 15-ik karaktert.
echo $karakter;

fclose($mf);  //Lezárjuk a megnyított fájlt.
?>
Programunk eredménye:

A 61-ik karakter = a
Az első karakter = E
Az 15-ik karakter = t
Az ftell() függvénnyel, kiírathatjuk a fájlpozíció-mutató aktuális pozícióját..
Mozgatás fseek() függvénnyel.
<?php
$mf= fopen("szoveg_fix.txt", "r");  // Megnyítjuk a munka-fájlt, olvasásra (" r ").

echo "Fájlpozíció-mutató kezdeti pozíciója = ".ftell($mf);         // Kiíratjuk a fájlpozíció-mutató, kezdeti pozícióját. 

fseek($mf,"15");                 // Módosítjuk a fájlpozíció-mutató pozícióját, a karakterlánc 15-ik eleme mögé.

echo "Fájlpozíció-mutató módosított pozíciója = ".ftell($mf);           // Kiíratjuk a fájlpozíció-mutató, módosított pozícióját. 

fclose($mf);     // Lezárjuk a megnyított munka-fájlt.
?>
Programunk eredménye:

Fájlpozíció-mutató kezdeti pozíciója = 0
Fájlpozíció-mutató módosított pozíciója = 15
Az fseek() és rewind() függvénnyel, oda-vissza mozgatással, szöveget írunk.

A következő betűsorból tetszőleges szót vagy mondatot rakhatunk össze.

Teszteléshez, jegyzettömb programunkkal, hozzunk létre egy "abc" elnevezésű, és TXT kiterjesztésű fájlt, ugyan azon mappába, melybe a php fájlunk is van.
Az abc.txt fájlunkba, írjuk be a következő betűsort, és mentés után zárjuk is be.


AÁBCDEÉFGHIÍJKLMNOÓÖŐPQRSTUÚÜŰXYVWZ

 

Betűk pozícióját, a sorszámokból azonosíthatjuk.
01234567891011 12 13 14 15 16 17 18 19 20 21 22 23 24 252627 2829 3031 323334
AÁBCDEÉFGHIÍ JKLMNOÓÖŐPQR STUÚÜŰXYVWZ

 

ABC betűiből, értelmes szöveg összeállítása:
Rakjuk össze, a következő szöveget: Hello World! Összeraktam a betűket!
<?php
$mf= fopen("abc.txt", "r");
fseek($mf,9);            echo fgetc($mf);             rewind($mf);
fseek($mf,5);            echo fgetc($mf);             rewind($mf);
fseek($mf,14);          echo fgetc($mf);             rewind($mf);
fseek($mf,14);          echo fgetc($mf);             rewind($mf);
fseek($mf,17);          echo fgetc($mf)." ";        rewind($mf);

fseek($mf,33);          echo fgetc($mf);             rewind($mf);
fseek($mf,17);          echo fgetc($mf);             rewind($mf);
fseek($mf,23);          echo fgetc($mf);             rewind($mf);
fseek($mf,14);          echo fgetc($mf);             rewind($mf);
fseek($mf,4);            echo fgetc($mf)."! ";       rewind($mf);

fseek($mf,19);          echo fgetc($mf);             rewind($mf);
fseek($mf,24);          echo fgetc($mf);             rewind($mf);
fseek($mf,24);          echo fgetc($mf);             rewind($mf);
fseek($mf,34);          echo fgetc($mf);             rewind($mf);
fseek($mf,5);            echo fgetc($mf);             rewind($mf);
fseek($mf,23);          echo fgetc($mf);             rewind($mf);
fseek($mf,0);            echo fgetc($mf);             rewind($mf);
fseek($mf,13);          echo fgetc($mf);             rewind($mf);
fseek($mf,25);          echo fgetc($mf);             rewind($mf);
fseek($mf,0);            echo fgetc($mf);             rewind($mf);
fseek($mf,15);          echo fgetc($mf)." ";        rewind($mf);

fseek($mf,0);            echo fgetc($mf)." ";        rewind($mf);

fseek($mf,2);            echo fgetc($mf);             rewind($mf);
fseek($mf,5);            echo fgetc($mf);             rewind($mf);
fseek($mf,25);          echo fgetc($mf);             rewind($mf);
fseek($mf,29);          echo fgetc($mf);             rewind($mf);
fseek($mf,13);          echo fgetc($mf);             rewind($mf);
fseek($mf,5);            echo fgetc($mf);             rewind($mf);
fseek($mf,25);          echo fgetc($mf)."! ";       rewind($mf); 

fclose($mf);  //Lezárjuk a megnyított munkafájlt.
?>
Programunk eredménye:

HELLO WORLD! SSZERAKTAM A BETKET!

A fenti kirakós szót, most feldaraboljuk tetszőleges helyen, és programunkkal ismét összerakatjuk.

Teszteléshez, jegyzettömb programunkkal, hozzunk létre egy "kaosz" elnevezésű, és TXT kiterjesztésű fájlt, ugyan azon mappába, melybe a php fájlunk is van.
Az kaosz.txt fájlunkba, írjuk be a következő betűsort, és mentés után zárjuk is be.


LOBETŰWOHELÖSAKTSZERAMAKETRLD!

 

Betűk pozícióját az első sorban, a sorszámokból azonosíthatjuk.
Második sor, kezdő és záró pozíciójelző hól legyen, az aktuális karakterek kiíratásához.

 

0,12,3,4,56,78,9,1011,1213,14,15 16,17,18,19 20,21 22 23,24,25 26,27,2829
0;32;56;38;411;313;4 16;5 20;3 22 23;4 26;429
LOBETŰWOHELÖSAKT SZER AM A KET RLD!

 

Ismét rakjuk össze, a következő szöveget: Hello World! Összeraktam a betűket!
Négy függvény, fseek() fgets() fgetc() rewind() összehangolt munkáját láthatjuk!
<?php
$mf= fopen("kaosz.txt", "r");
fseek($mf,8);           echo fgets($mf,4);         rewind($mf);
fseek($mf,0);           echo fgets($mf,3)." ";     rewind($mf);

fseek($mf,6);           echo fgets($mf,3);         rewind($mf);
fseek($mf,26);         echo fgets($mf,4);          rewind($mf);
fseek($mf,29);         echo fgetc($mf)." ";        rewind($mf);

fseek($mf,11);         echo fgets($mf,3);         rewind($mf);
fseek($mf,16);         echo fgets($mf,5);         rewind($mf);
fseek($mf,13);         echo fgets($mf,4);         rewind($mf);
fseek($mf,20);         echo fgets($mf,3)." ";    rewind($mf);

fseek($mf,22);         echo fgetc($mf)." ";       rewind($mf);

fseek($mf,2);           echo fgets($mf,5);        rewind($mf);
fseek($mf,23);         echo fgets($mf,4);        rewind($mf);
fseek($mf,29);         echo fgetc($mf);           rewind($mf);

fclose($mf);  //Lezárjuk a megnyított munkafájlt.
?>
Programunk eredménye:

HELLO WORLD! SSZERAKTAM A BETKET!

 

Emlékeztető:

  1. Az fseek() függvénnyel határozzuk meg, a fájlpozíció-mutató, kezdő pozícióját.
  2. Az fgets() függvénnyel határozzuk meg, a fájlpozíció-mutató, végső pozícióját. Így a kezdő és végső pozíciók között elhelyezkedő karakterláncot olvassa ki.
  3. Az fgetc() függvény, egyetlen-egy karakterláncot olvas be. Így a kezdő pozíció után elhelyezkedő karakterláncot olvassa ki.
  4. A rewind() függvénnyel, visszaállítjuk dokumentumunk elejére a fájlpozíció-mutatót.