Teszteléshez, jegyzettömb programunkkal, hozzunk létre egy "irasi_pozicio" elnevezésű, és "TXT" kiterjesztésű fájlt, ugyan azon mappába, melybe a php fájlok is lesznek
Az irasi_pozicio.txt fájlunkba, írjuk be a következő sorokat, és mentés után zárjuk is be.
Tesztelés megkönnyítése végett, szövegrészek hossza, szöveg elejétől és az azt követő vesszőt is beleszámolva, 10 karakterláncot tartalmaznak.
Egy ABCDE,Kettő ABC,Három ABC,Négy ABCD,Öt ABCDEF,
Fájlba írás,fwrite() függvénnyel: - fwrite($munkafájl, mit írunk); - fwrite($munkafájl, mit írunk, és mennyi bájtot);
<?php $mf= fopen("irasi_pozicio.txt", "r+"); $iras ="KAKUKK ŐŐ,"; // Idézőjelek közötti 10 karakterláncot írjuk be, a meglévő szövegbe. fwrite($mf, $iras); fclose($mf); // A következő programrész, csak a visszaellenőrzés céljából van beírva. $mf= fopen("irasi_pozicio.txt", "r"); $karakter= fgets($mf,60); echo $karakter; fclose($mf); ?> |
Programunk eredménye:Törli az első 10 karakterláncot (Egy ABCDE,) és helyére írja az új szót. KAKUKK ŐŐ,ttő ABC,Három ABC,Négy ABCD,Öt ABCDEF, |
<?php $mf= fopen("irasi_pozicio.txt", "r+"); fseek($mf,20); // Pozíció-jelzőt, a 20-ik karakterlánc mögé állítjuk, azaz a "Három ABC," szó elé. $iras ="KAKUKK ŐŐ,"; // Idézőjelek közötti 10 karakterláncot írjuk be, a meglévő szövegbe. fwrite($mf, $iras); fclose($mf); // A következő programrész, csak a visszaellenőrzés céljából van beírva. $mf= fopen("irasi_pozicio.txt", "r"); $karakter= fgets($mf,60); echo $karakter; fclose($mf); ?> |
Programunk eredménye: Törli 20-tól 30-ig a karakterláncot (Három ABC,) és helyére írja az új szót. Egy ABCDE,Kettő ABCKAKUKK ŐŐ,Négy ABCD,Öt ABCDEF, |
<?php $mf= fopen("irasi_pozicio.txt", "r+"); fseek($mf,20); // Pozíció-jelzőt, a 20-ik karakterlánc mögé állítjuk, azaz a "Három ABC," szó elé. // Elsőként, beírjuk az új adtokat, majd a tartalmi rész hátrelévő részét. $iras ="KAKUKK ŐŐ,Három ABC,Négy ABCD,Öt ABCDEF,"; fwrite($mf, $iras); fclose($mf); // A következő programrész, csak a visszaellenőrzés céljából van beírva. $mf= fopen("irasi_pozicio.txt", "r"); $karakter= fgets($mf,60); echo $karakter; fclose($mf); ?> |
Programunk eredménye: Törli 20-tól a karakterláncot, és helyére írja az új tartalmat. Egy ABCDE,Kettő ABCKAKUKK ŐŐ,Három ABC,Négy ABCD,Öt ABCDEF, |
Ha az irasi_pozicio.txt fájlunk tartalma rövid, azaz csak egy két sornyi szöveget, adatot tartalmaz, akkor a fenti programunk is megfelel a feltételeinknek.
Kimásoljuk az irasi_pozicio.txt fájl tartalmából, a beírandó adatok meghatározott pozíciójától kezdve, a már meglévő tartalmat, és az új adat mögé illesztjük, majd programunkkal ezen hosszúságú tartalmat íratjuk be.
De, mi van akkor, ha az irasi_pozicio.txt fájl tartalma igen hosszú, vagy másokkal közösen dolgozunk egy adott dokumentáción, de őnekik nincs közvetlen hozzáférésük az irasi_pozicio.txt fájl jegyzettömb programmal történő megnyitásához.
A következő példákban láthatjuk, hogyan küszöbölhető ki, több felhasználó esetében az írási probléma.
<?php $mf = fopen("irasi_pozicio.txt","r"); echo fpassthru($mf); fclose($mf); ?> |
Programunk eredménye: Kiírja a teljes tartalat: A sor végi szám, nem része az irasi_pozicio.txt fájl tartalmának, csak jelzi a karakterlánc hosszát. Egy ABCDE,Kettő ABC,Három ABC,Négy ABCD,Öt ABCDEF,54 |
<?php $mf=fopen("irasi_pozicio.txt", "r+"); // Munkafájl megnyitása olvasásra és írásra ( r+ ). $hova="Egy ABCDE,Kettő ABC,"; // Fájlpozíció-mutató, mely szövegrész mögé kerüljön. $fm_ertek=strlen($hova); // Fájlpozíció-mutató beállítása oda, ahova az új adatot írjuk. $tartalom_hossza=55; // Az előző program által kiírt érték + 5 a biztonság végett. $fm_utani=$tartalom_hossza-$fm_ertek; // Fájlpozíció-mutató pozíciója utáni, karakterlánc hossza. fseek($mf,$fm_ertek); // Fájlpozíció-mutató beállítása az $fm_ertek váltózóban tárolt értékre. // Fájlpozíció-jelző utáni tartalom hossza: $fm_utani=55-20; A $fmu_tartalom változóban eltároljuk ezt a 35 karakterláncot. $fmu_tartalom= fgets($mf,$fm_utani); echo $fmu_tartalom."<br />"; // Ellenőrzésre jó, de a program szempontjából, ezen sorra nincs szükség. rewind($mf); // Fájlpozíció-jelzőt, alapállásra, azaz a 0-ik pozícióba állítjuk. fseek($mf,$fm_ertek); // Új adatok beírásának kezdő pozíciója, az $fm_ertek váltózóban tárolt értékre. $uj_adat="KAKUKK ŐŐ,"; // $uj_adat elnevezésű változó tárolja, az idézőjelek közé beírt új adatot. // $modositas elnevezésű változóba helyezzük, a $uj_adat és $fmu_tartalom nevű változókban tárolt adatokat. $modositas=$uj_adat .= $fmu_tartalom; fwrite($mf, $modositas); // $modositas elnevezésű változóban tároltakat beíratása. fclose($mf); // A megnyitott munkafájl bezárása. // A következő programrész, csak a visszaellenőrzés céljából van beírva. $mf= fopen("irasi_pozicio.txt", "r"); $karakter= fgets($mf,100); echo $karakter; fclose($mf); ?> |
Programunk eredménye: Fájlpozíció-mutató utáni tartalom: Három ABC,Négy ABCD,Öt ABC Egy ABCDE,Kettő ABC,KAKUKK ŐŐ,Három ABC,Négy ABCD,Öt ABC |
Emlékeztető:
Az " r+ " a munkafájlt, írásra és olvasásra nyitja meg. Az állománypozíció-jelzőt a fájl elejére állítja.
Új adatok bevitelénél: