ugrás a tartalomhoz

File tartalom módosítás

Anonymous · 2006. Okt. 28. (Szo), 11.15
Hello!

Van egy szövegfile-om amiben egymást kövtő bejegyzések vannak, amiket sortörés (\n) választ el egymástól.

pl:

548:ASUSTek Computer:2006/10/26
549:Canon:2006/10/26
550:Epson:2006/10/27
551:Hawlett-Packard:2006/10/27
552:Samsung Electronics:2006/10/27
553:Logitech:2006/10/27

A sor első három számjegye egyedi.
A kérdésem hogyan lehet PHP-val törölni egy tetszőleges sort (mondjuk az 550-est), úgy hogy a többi adat megmaradjon, lehetőleg ne maradjon üres sor a szövegfileba, és lehetőleg ne keljen hozza ideiglenes állományot létrehozni?

Minden ötletet előre is köszi!
 
1

Egy ötlet:

gnycz · 2006. Okt. 28. (Szo), 12.36
Database (dbm-style) Abstraction Layer Functions

Ha mindenképpen meg kell őrizni a szöveges fájlok formátumát, akkor dióhéjban:

fopen, fread, strpos, substr, fwrite, fclose.

Lásd még: file
2

magyar nyelv, és a logika...

TeeCee · 2006. Okt. 28. (Szo), 13.03
és lehetőleg ne keljen hozza ideiglenes állományot létrehozni?

Szóval az nem 'állományot', hanem 'állományt'...

Amúgy meg, logikusan végiggondolva:
1. Beolvasod a fájlt
2. Kiszeded belőle, ami nem kell bele
3. Visszaírod a fájlt

Namármost:
Ha a fájl nagy, akkor nem érdemes memóriába pakolnod és ugyanabba a fájlba visszaírnod, mert ha közben mondjuk elfogy a memória, akkor megáll a script...
Ezért én azt javaslom, hogy:
1.) beolvasod a fájlod minden egyes sorát külön külön
2/a) ha az éppen beolvasott sor NEM a törlendő, akkor egy ideiglenes fájlba beírod
2/b) (ha épp a törlendő, akkor nem csinálsz semmit)
3.) bezárod a fájlokat
4.) az ideiglenes fájlt átnevezed az eredetire

Memóriapazarlás lenne máshogy csinálni.
Illetve még annyit tennék, hogy a 2/b esetben lehet egy $voltTorolt valtozonak true értéket beállítani, és a végén, ha az igaz, akkor nevezed csak át az ideiglenes fájlt, egyébként meg kiírod, hogy 'Hopp, ilyen nem is volt...'

A megoldásokhoz szükséges függvényeket már leírták. Én azért írtam, nehogy az egész fájlt beolvasd a memóriába, mert annak nagy szívás lehet a vége...
3

Adatbázis

Anonymous · 2006. Okt. 28. (Szo), 15.19
Annyit hozzátennék, hogy hülyeség egy ilyesmit flat file adatbázisban tárolni, ha van más is. Szóval, ha van adatbázis, mindenképpen azt kéne használni, mert ha TE irsz a fájlba, más nem tud belőle olvasni...
4

szerintem

amonrpg · 2006. Okt. 29. (V), 12.51
Szerintem nagyon gyorsan írd át az egészet SQLite-ra, ha más nincs kéznél. Hidd el, jobban jársz, ha nem írsz mini SQL szervert. :D