Gå til innhold

Dato RSS. var: Tegnsettproblemer [Løst]


Anbefalte innlegg

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 av EirikO
Lenke til kommentar
Videoannonse
Annonse

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

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 av EirikO
Lenke til kommentar

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 av Runar0
Lenke til kommentar

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 av EirikO
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...