Új hozzászólás Aktív témák
-
faster
nagyúr
válasz burgatshow #30 üzenetére
<?xml version=''1.0'' encoding=''iso-8859-2'' ?>
Szúrd be az elejére. -
faster
nagyúr
válasz burgatshow #32 üzenetére
Az attól függ, hogy milyen paraméterrel nyitod meg a fájlt azt fopennél.
Bővebben: link
A táblázatot nézd meg.
[Szerkesztve] -
faster
nagyúr
válasz burgatshow #34 üzenetére
Beszúrva nem lehet írni, vagy ''w'' paraméterrel nyitod meg a fájlt, és akkor a régi tartalom felülíródik, vagy ''a'' (append), és akkor a régi tartalom végéhez íródik. Én úgy csinálnám, hogy beolvasnám a fájlt, és stringműveletekkel raknám össze az új tartalmat.
Pl. csinálsz egy templatefájlt, kábé így:
<xml>
%tartalom%
</xml>
Ezt beolvasod egy változóba ($template). És van egy másik változód, legyen mondjuk $szoveg, amibe a szöveg van, amit be akarsz szúrni.
$t = str_replace(''%tartalom%'',$szoveg,$teplate);
és a $t-t kiírod a fájlba.
[Szerkesztve] -
faster
nagyúr
válasz burgatshow #36 üzenetére
Az, hogy ezt a $template változót fáljból olvasod be, vagy pedig a PHP-kódba rakod bele, tulajdonképpen mindegy, ha nagyméretű, akkor célszerű fájlba tenni.
Ja igen, elméletileg megnyitott fájlban is lehet pozicionálni (asszem), de ezt még sosem próbáltam. A template megoldás egyszerűbb, elegánsabb.
[Szerkesztve] -
faster
nagyúr
válasz burgatshow #38 üzenetére
Igen, kicsit zagyva volt a fogalmazásom. Szóval arra gondoltam, hogy kérdezted a beszúró fájlírást, és én azt írtam, hogy nem lehet. De elméletileg asszem lehetséges, mert a megnyitott fájlban tudsz pozicionálni. De ezt én még sosem próbáltam, általában sokkal egyszerűbb beolvasni egy szövegfájlt egy változóba, ott machinálni vele, majd visszaírni a fájlba.
-
faster
nagyúr
válasz burgatshow #42 üzenetére
$template = fopen($rss, 'a') ??
Az fopen nem olvas be fájl tartalmat. Csak megnyit egy fájlt, és hozzárendel a nyitott fájlhoz egy Resource azonosítót, ami jelen esetben a $template változóba kerül bele, ezzel a fájllal még nem történt semmi, olvashatod freaddel, vagy írhatod fwrite-tal, de maga az fopen nem végez rajta semmi műveletet.
Ha file tartalmát akarod beolvasni egy stringbe, akkor
$template = file_get_contents($rss);
ez PHP 4.3.0 felett működik, vagy
$fh = fopen($rss,''r''); <- itt elég az ''r'' is, mivel csak olvasni akarod
$template = fread($fh,filesize($rss));
fclose($fh);
[Szerkesztve] -
faster
nagyúr
válasz burgatshow #44 üzenetére
Egyrészt file_get_contents
másrészt...
Az fwrite-nak file-handler kell, annak a fájlnak a resouce id-ja, amit írni akarsz. Ezt egy fopennel tudod előállítani. Jelen esetben viszont kap egy $template nevű változót, amiben a template fájl tartalma van, nem pedig az írandó xml fájlnak a resource-ja. Választd szét a template fájl beolvasását az XML fájl írásától, mert már keverednek a változók.
[Szerkesztve] -
faster
nagyúr
Jah, egyébként ha file_get_contents működik, van egy olyan, hogy file_put_contents is, ami file-ba ír egy stringet, hasonlóan bonyolult a szintaktikája, mi a file_get_contents-nek.
-
faster
nagyúr
válasz burgatshow #47 üzenetére
Resource->erőforrás. File-handler->file azonosító. Kábé így lehet őket lefordítani.
-
faster
nagyúr
válasz burgatshow #49 üzenetére
Nem, a file_get_contents egy külön állatfajta, neki nem kell fopen (gyakorlatilag egyben tartalmazza az fopen, fread,fclose-t).
Semmi más nem kell neki csak a file neve elérési úttal, és azt a fájlt megnyitja, tartalmát beolvassa a megadott változóba, majd a fájlt lezárja.
Ennyi az egész:
$content = file_get_contents(''template.xml'');
Csak azért írtam egy másik hagyományosabb megoldást is, mert ezt a file_get_contents függvényt csak a 4.3 verzió fölött lehet használni.
Hasonlóan egyszerű a file_put_contents, ami pedig egy stringet kiír egy fájlba.
Ennek sem kell fopen,fclose, file-handlert tároló változó stb... csak egy fájlnév (meg persze a string, amit ki akarsz írni).
file_put_contents(''fileneve'',''eztakaromkiirni'');
vagy a te esetedben
file_put_contents(''RSSfileneve'',$template);
[Szerkesztve] -
faster
nagyúr
válasz burgatshow #51 üzenetére
fseek-et sosem használtam. Egyébként most nézem, te ugynazazt a fájlt akarod írni, amiből olvasod a template-t?
[Szerkesztve] -
faster
nagyúr
válasz burgatshow #54 üzenetére
Figyelj, az nem lesz jó. Gondolj csak bele, van egy templated %tartalom% sorral, erre te felülírod, akkor legközelebb olvasásnál már nem lesz a fájlban ilyen , hogy %tartalom% ! A template egy külön fájl mit csak olvasol, és van egy külön fájl a készre gyártott RSS-nek.
[Szerkesztve] -
faster
nagyúr
válasz burgatshow #56 üzenetére
Viccelsz? Tök egyszerű!
Egyébként kettő fájl kell. A template, és a kész RSS-XML fájl. A hírek meg egy adattáblában vannak. Meg hát persze maga a PHP file.
[Szerkesztve] -
faster
nagyúr
válasz burgatshow #58 üzenetére
Egyébként, ha nem túl leterhelt a site-od, akkor nem kell feltétlenül lementened fájlba a kész rss-t. Kinyomod a kimenetre printel, az az alkalmazás pedig a te PHP-d kimenetét olvassa, nem pedig a lementett XML fájlt.
-
faster
nagyúr
válasz burgatshow #60 üzenetére
Bocs, most nézem, hogy file_put_contents csak 5-ös PHP-ban van. Akkor írd ki a hagyományos módszerrel. Egyébként meg ne a $template változó tartalmát írd ki, hanem amiben az str_replace-vel kicserélt tartalom van, azaz a $text változót.
$fp = fopen(''xmods.xml'', ''w'');
fwrite($fp,$text);
fclose($fp);
Egyébként az RSS olvasóknak, meg úgy általában mindenféle programnak, ami webszerverről kap adatot, (így a böngészőnek is) marhára mindegy, hogy milyen nevű fájlból kapja az adatokat, legyen akár egy statikus XML fájl, vagy egy dinmikusan generált xml egy php fájlból.
[Szerkesztve] -
faster
nagyúr
válasz burgatshow #62 üzenetére
Légyszi oldd már meg önállóan. Három sor az egész file írás.
-
faster
nagyúr
válasz burgatshow #64 üzenetére
Jóvanna. Idézőjeleket kicserélted?
-
faster
nagyúr
válasz burgatshow #66 üzenetére
$kiir = fwrite (''xmods.xml'', $text);
helyett azt a három sort írd be, amit #61-ben írtam. Az fwritehoz először meg kell nyitni a fájlt fopennel. Ez visszad egy file-handlert (gyakorlatilag egy fájlra mutató erőforrásazonosító), ez kerül bele az $fp-be. Ezután minden fájlművelet ezen az bizonyos xmods.xml fájlon ezen azonosító segítségével zajlik.
$fp = fopen(''xmods.xml'',''w'');
Ezt a file-handlert kell átpasszolni az fwritenak, meg a kiírandó szöveget, ami a $text változóban van benne. ( De ez benne van az fwrite leírásában is a manualban )
fwrite($fp,$text);
Ezután lezárod a fájlt fclose-zal, ennek szintén file-handlert kell megadni.
fclose($fp);
[Szerkesztve]
Új hozzászólás Aktív témák
- eBay-es kütyük kis pénzért
- Kínai, és egyéb olcsó órák topikja
- Ülésezik a hardveregylet
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
- Telekom mobilszolgáltatások
- Lightyear - befektetési app
- Gumi és felni topik
- Xiaomi 12 - az izmos 12
- gban: Ingyen kellene, de tegnapra
- 3D nyomtatás
- További aktív témák...