Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 7. 6. 2008, 23:47:07
Mám problém:
Zapisuji pomocí PHP do souboru několik tagů,vše funguje o.k jenže na konci souboru je ukončovací tag </simpleviewergallery> , ketrý musí být vždy jako poslední a já když zapisuji na konec souboru vždy zapíši hodnoty až za něj:( Jde nějakým způsobem v PHP ošetřit, aby se zapisovalo vždy před tento tag? Napadlo mne zapisovat do samostatného souboru a ten poté includovat,jenže se jedná o XML soubor,takže to asi není možné.. Díky za každou radu.. Zde je zápis kodu: <?php //Export do souboru $soubor = "../include/scripts/galerry/gallery.xml"; //Název a umístìní zapisovaného souboru $export = fopen($soubor,"a+"); //Definice promenne a prirazeni fce fopen s parametry(nazev souboru,pristup prava) fwrite($export,"\r\n". "<image>\r\n". "<filename>$name</filename>\r\n". "<caption>$text</caption>\r\n". "</image>"); //Fce pro zapis (prizareni prom a vpis hodnot,na konci odrad) fclose($export); //Fce pro uzavreni handlu souboru endif; ?> |
||
bukaj Profil |
#2 · Zasláno: 8. 6. 2008, 00:08:45
gardener
Použij např. SimpleXML a nebudeš tohle muset vůbec řešit. |
||
krteczek Profil |
#3 · Zasláno: 8. 6. 2008, 00:15:55
potřebuješ to mít v xml? jinak bych ty data uložil jako serializovanou array:
$data = unserialize(file_get_contents($flie)); $data[] = array('filename' => $name, 'caption' => $text, 'width' => 800, 'height' => 600); file_put_contents($file, serialize($data)); |
||
Mistr Profil |
#4 · Zasláno: 8. 6. 2008, 00:24:05
V duplicitním (již smazaném) tématu:
Taps radil: a co si udělat takový skript, který by ti při otevření souboru našel </simpleviewergallery> a smazal a pak zapsal nová data a vložil </simpleviewergallery> nebo by to možná šlo i tak že by jsi nastavil ukazatel před </simpleviewergallery> zkus se podívat na fseek Mike8748 doporučoval: pres SimpleXML nactes soubor, upravis jako pole, a pak zase zapises do souboru |
||
krteczek Profil |
#5 · Zasláno: 8. 6. 2008, 00:41:59
jinak můžeš načíst soubor jako pole a poslední žádek umazat:
$data = file($file); //odstranění posledního řádku unset($data[(count($data) -1)]); $data[] = "<image>"; $data[] = "<filename>$name</filename>"; $data[] = "<caption>$text</caption>"; $data[] = "</image>"); $data[] = "</simpleviewergallery>"; # zápis do souboru file_put_contents($file, join("\n", $data)); |
||
gardener Profil |
#6 · Zasláno: 8. 6. 2008, 01:02:30
Mistr: Ten nápad se mi líbí ,hlavně ten s tím ukazatelem, jenže nikdy jsem při práci se soubory ještě ukazatel nevyužil,takže nevím jak na to:)
krteczek Hned ten postup vyzkouším. bukaj To by určitě fungovalo,jenže to potřebuji řešit globálně,jelikož dříve nebo později to budu potřebovat jinde a třeba to nebude zrovna XML.. Díky ale za info,hned vyzkouším.. |
||
gardener Profil |
#7 · Zasláno: 8. 6. 2008, 01:13:18 · Upravil/a: gardener
Mistr: A u fseek, jak odkážu na předposlední řádek prosímtě?Nemusím prvně zjišťovat celkový počet řádků?
Krteczek Funguje to výborně, děkuji za radu.. |
||
gardener Profil |
#8 · Zasláno: 8. 6. 2008, 02:05:01
Tak jsem zjistil zajímavou věc:
Při použití Krteczkova postupu se zhruba po druhém uploadu začnou vytvářet v XML souboru prázdné řádky,posledaní záznam je vždy v celku ale ostatní se od sebe stále "vzdalují" až v podstatě přestane skript fungovat.. Vůbec ale netuším,čím by to mohlo býti způsobeno:)..ale vypadá to jako by se vždy vložilo to co se má zapsat i jako prázdné řádky.. |
||
Časová prodleva: 16 let
|
0