TheClown Skrevet 24. juni 2007 Del Skrevet 24. juni 2007 Heisann. Jeg prøver å lage en rss feed gjennom et .php script. Problemet mitt er at det feltet jeg skal fylle inn med info (<item><name> osv.) ligger ca. midt inne i .xml fila. Derfor bruker jeg foreach() og explode() til å dele opp hele fila. News.xml tom <?xml version="1.0" encoding="iso-8859-1" ?> <rss version="2.0"> <channel> </channel> </rss> Scriptet deler linja ved <channel> og der kommer infoen min inn. Når infoen er ferdig kommer slutten av fila altså </channel> og </rss>. Men av en eller annen merkelig grunn funker ikke dette. Jeg har prøvd en million ganger. Og jeg er ikke veldig godt med foreach() og explode() enda. Script.php <?php //Her finner vi riktig sted i fila! $shit = file("news.xml"); foreach($shit as $rssalt) { $x99 = explode( "<channel>", $rssalt ); $forst = $x99[0]; $sist = $x99[1]; } echo $rssalt; $rssitem = "<item> <title>".$titel."</title> <description>Kommer</description> <link>".$site."/noeeee/kommer</link> <pubDate>Kommer</pubDate> </item>\n"; $rsstext = $forst . "" . $rssitem . "" . $sist; echo $rsstext; if(!$rss = fopen("news.xml","a")) { die("Couldn't open file. Please contact admin"); } if(!fwrite($rss,$rsstext)) { die("Couldn't write to file. Please contact admin"); } fclose($rss); echo $rsstext; ?> Outputen i .xml når jeg er ferdig med scriptet en gang: 2: <rss version="2.0"> 3: <channel> 4: </channel> 5: </rss></rss> 6: <item> 7: <title>Thomas</title> 8: <description>Kommer</description> Hvorfor deler den oppe opp fila? Den legger all infoen etter det som allerede er i news.xml. $rsstext = $forst . "" . $rssitem . "" . $sist; Lenke til kommentar
The_Lozer Skrevet 24. juni 2007 Del Skrevet 24. juni 2007 if(!$rss = fopen("news.xml","a")) prøv med w der Lenke til kommentar
Gjest Slettet+142 Skrevet 24. juni 2007 Del Skrevet 24. juni 2007 (endret) Hvorfor ikke bruke SimpleXML? Vet det ikke er svaret, men det er mye bedre til lesing av XML. Endret 24. juni 2007 av Slettet+142 Lenke til kommentar
TheClown Skrevet 24. juni 2007 Forfatter Del Skrevet 24. juni 2007 (endret) if(!$rss = fopen("news.xml","a")) prøv med w der 8932683[/snapback] faktisk, det slo meg før jeg posta. Stupid me. Takk for hjelp, tror det skal funke nå Scriptet mitt ser sånn ut: <?php session_start; //Open file and get info $file = file("database.txt"); // Cut the string into more strings with right info foreach($file as $alt) { $x = explode( '%%%', $alt ); $linje = $x[0]; } $x2 = explode( "|||", $linje ); $id = $x2[0]; $tittelogtext = $x2[1]; $x3 = explode( '---', $tittelogtext ); $titel = $x3[0]; $text = $x3[1]; // Open rss feeder and cut the stringinfo in two $shit = file("news.xml"); $x99 = explode( "<channel>", $shit ); $forst = $x99[0]; $sist = $x99[1]; echo $x99[0]; // Itemtext for the rss feeder $rssitem = "<item> <title>".$titel."</title> <ID>".$id."</ID> <description>Kommer</description> <link>".$site."/noeeee/kommer</link> <pubDate>Kommer</pubDate> </item>\n"; $rsstext = $forst . "" . $rssitem . "" . $sist; echo $rsstext; if(!$rss = fopen("news.xml","w")) { die("Couldn't open file. Please contact admin"); } if(!fwrite($rss,$rsstext)) { die("Couldn't write to file. Please contact admin"); } fclose($rss); echo $rsstext; ?> Men det vil forsatt ikke funke. Outputen blir: ArrayArray<item> <title>Sofie info</title> <ID>29</ID> <description>Kommer</description> <link>/noeeee/kommer</link> <pubDate>Kommer</pubDate> </item> Array<item> <title>Sofie info</title> <ID>29</ID> <description>Kommer</description> <link>/noeeee/kommer</link> <pubDate>Kommer</pubDate> </item> Array, wtf?! Endret 24. juni 2007 av TheClown Lenke til kommentar
pulse Skrevet 25. juni 2007 Del Skrevet 25. juni 2007 (endret) Heisann. Jeg prøver å lage en rss feed gjennom et .php script. Problemet mitt er at det feltet jeg skal fylle inn med info (<item><name> osv.) ligger ca. midt inne i .xml fila. 8932552[/snapback] Er det ikke likegreit og bare lage ett script som skriver hele rss informasjonen for deg? Err skal den blades med info fra XML? Uansett vil jeg anbefale deg og fårst hente inn all info du trenger fra andre kilder først, for så og lage en "rssout.php" fil, som kun streamer rss. Du kan du gjøre det veldig enkelt: PHP <?php header("Content-type: application/xhtml+xml"); echo "<x3fxml version="1.0" encoding="ISO-8859-1"x3f>"; // legg inn en loop her som echo-er ut den info du måtte ønske enten hentet fra sql / array e.el ?> Ønsker du og hante informasjon til denne feeden -kun- fra di egen database/array er dette desidert lettest. Om du ønsker og hente informasjon fra andre rss / xml / el. ville jeg laget en funksjon for dette først (som kanskje går med jevne mellomrom og oppdaterer seg mot en fil / database på din server) sånn at om evt den siden du henter info fra er nede / utilgjengelig. Så kan den beholde sist motatt info, eller skrive ut en feilmelding. Edit: La merke til at backslashen forsvant under posting. det skal være en backslash på linje 3 foran hver x3f og foran hvert " Endret 25. juni 2007 av pulse Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå