EirikO Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 (endret) Skal lage en liten RSS-feed på bakgrunn av en database, men det dukket opp et problem. Når jeg går til RSS.php får jeg følgende feilmelding: XML parsing failed: syntax error (Line: 16, Character: 24) 15: 16: <description>I dag har vært en ganske så trivel "&"-tegner blir markert som feil.. Hva kan jeg gjøre for fikse dette? $query = "SELECT id, overskrift, tekst FROM innlegg ORDER BY tid DESC LIMIT 0,5"; $result = mysql_query($query); while ($line = mysql_fetch_assoc($result)) { $return[] = $line; } $now = date("D, d M Y H:i:s T"); $output = "<?xml version=\"1.0\"?> <rss version=\"2.0\"> <channel> "; foreach ($return as $line) { $output .= "<item><title>".htmlentities($line['overskrift'])."</title> <link>http://www.adresse.com/?id=vis&artid=".htmlentities($line['id'])."</link> <description>".htmlentities(strip_tags($line['tekst']))."</description> </item>"; } $output .= "</channel></rss>"; header("Content-Type: application/rss+xml"); echo $output; Endret 11. mai 2008 av EirikO Lenke til kommentar
Martin A. Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 Putt <![CDATA[]> rundt tekst med spesielle tegn. $output .= "<item><title><![CDATA[".htmlentities($line['overskrift'])."]]></title> <link>http://www.adresse.com/?id=vis&artid=".htmlentities($line['id'])."</link> <description><![CDATA[".htmlentities(strip_tags($line['tekst']))."]]></description> </item>"; Lenke til kommentar
EirikO Skrevet 11. mai 2008 Forfatter Del Skrevet 11. mai 2008 (endret) Har et lite problem for å validere RSS-feeden min.. Får følgende beskjed fra w3c: This feed does not validate. line 8, column 59: pubDate must be an RFC-822 date-time: Thu, 08 May 2008 21:24:58 CEST [help] <pubDate>Thu, 08 May 2008 21:24:58 CEST</pubDate> Bruker følgende for å lage dato: $now = date("D, d M Y H:i:s T",$return[0]['tid']); Personelig synes jeg forslaget likner veldig på det jeg har, noen som har et tips? Endret 11. mai 2008 av EirikO Lenke til kommentar
Runar0 Skrevet 11. mai 2008 Del Skrevet 11. mai 2008 (endret) Bruker du php 5.1.0 eller nyere kan du bruker konstanten DATE_RFC822 for å generere ein dato etter RFC-822 standaren. Da bør du vere sikkert på at det blir rett. (Er forøvrig enig i at det ser heilt likt ut) // PHP 5.1.0 og nyere $now = date(DATE_RFC822, now()); Edit: Fra w3.org - RFC-822 zone = "UT" / "GMT" ; Universal Time ; North American : UT / "EST" / "EDT" ; Eastern: - 5/ - 4 / "CST" / "CDT" ; Central: - 6/ - 5 / "MST" / "MDT" ; Mountain: - 7/ - 6 / "PST" / "PDT" ; Pacific: - 8/ - 7 / 1ALPHA ; Military: Z = UT; ; A:-1; (J not used) ; M:-12; N:+1; Y:+12 / ( ("+" / "-") 4DIGIT ) ; Local differential ; hours+min. (HHMM) Skal det ikkje vere CST og ikkje CEST Endret 11. mai 2008 av Runar0 Lenke til kommentar
EirikO Skrevet 11. mai 2008 Forfatter Del Skrevet 11. mai 2008 (endret) Hmmm. Mulig. Høres jo fornuftig ut, men hvordan får jeg php til å fikse det da? bruker som sagt: date(".... T")... EDIT: Fant det ut. Bruker nå: $now = date("D, d M Y H:i:s O",$line['tid']); Hjalp alstå med en "O" istedet for "T".. Endret 11. mai 2008 av EirikO 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å