- Milyen okostelefont vegyek?
- Redmi Note 12 4G - valaki fizetni fog
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- A Watch7-tel debütálhat a Samsung vércukormérője
- Samsung Galaxy A54 - türelemjáték
- MG4 menetpróba
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Samsung Galaxy Watch4 és Watch4 Classic - próbawearzió
- Samsung Galaxy Z Fold5 - toldozás-foldozás
- Yettel topik
Hirdetés
-
Miniképernyős, VIA-s Epomaker billentyűzet jött a kábelmentes szegmensbe
ph A megfizethető, szivacsokkal jól megpakolt modell ötfajta kapcsolóval és kétféle színösszeállítással/kupakprofillal szerezhető be.
-
VR játék lesz az Alien: Rogue Incursion
gp Az év végén érkező program PC-re, Meta Quest 3-ra és PlayStation VR2-re érkezik a tervek szerint.
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
Ú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
- Milyen okostelefont vegyek?
- Formula-1
- Politika
- HiFi műszaki szemmel - sztereó hangrendszerek
- Autós topik
- Kínai, és egyéb olcsó órák topikja
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Redmi Note 12 4G - valaki fizetni fog
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- GTA VI
- További aktív témák...