Entfernen von HTML Entities für RSS Feed

Hallo,

ich versuche jetzt schon seit Stunden ergebnislos, einen RSS Feed mit PHP
zusammenzubauen, scheinbar habe ich da ein Brett vorm Kopf ..

Es sollen Beiträge aus einer MySQL-Datenbank geholt werden, die dort im
HTML-Format abgelegt sind; d.h., zB die deutschen Umlaute sind mit & ouml;
etc. kodiert, und es sind auch HTML-Tags für Absätze etc. enthalten (im
Rahmen des aktuellen Problems kommen mit gerade Zweifel, ob es überhaupt
klug ist, das so in die Datenbank zu schreiben).

Um die Felder jetzt in einem RSS 2.0 Feed anzuzeigen, müßten ja m.E. die
Umlaute wieder von HTML-Kodierung zurückverwandelt werden in "richtige"
Umlaute, sonst gibts einen XML Parsingfehler (sowas wie "XML parsing error:
<unknown>:32:10: undefined entity").

Ich habe es, zB für ein Feld text, das aus der DB kommt, versucht mit

$tab = get_html_translation_table(HTML_SPECIALCHARS);
$tab = array_flip($tab);
$text = strtr(strip_tags($row[text]),$tab);

aber das scheint nicht richtig zu sein - vermutlich verstehe ich die
Funktion nicht wirklich.

htmlentities()

scheint ja genau das Gegenteil von dem zu tun, was ich brauche. Irgendwie
drehe ich mich jetzt im Kreis und weiß nicht genau, ob mit nur die richtige
PHP Funktion fehlt - vielleicht fehlt mir aber auch einfach das Wissen, wie
ich das im XML zusammenbaue. Ich frag jetzt erstmal nach der Funktion ;o)

In den kodierten Umlaut habe ich hier ein Leerzeichen eingefügt, damit er
nicht versehentlich unkodiert angezeigt wird.

Gruß und danke für Anregungen
Erik

-----------------

Nachtrag:
Trotzdem hier noch der fehlerhafte Quellcode des erzeugten XML-Feeds,
vielleicht hilft der ja was - mit dem kodierten Umlaut in der letzten Zeile:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns="http://purl.org/rss/1.0/"
>

<channel rdf:about="http://www.irgendwas.de/">
<title>Forenbeiträge auf irgendwas.de</title>
<link>http://www.irgendwas.de/rss_forum.php</link>
<description></description>
<dc:publisher>irgendwas.de</dc:publisher>
<dc:creator>irgendwer</dc:creator>

<dc:date>2007-07-27T08:35:47Z</dc:date>
<dc:language>en</dc:language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<sy:updateBase>2000-01-01T00:00:00Z</sy:updateBase>
<items>
</items>
</channel>
<item rdf:about="http://www.irgendwas.de/842">

<item rdf:about="http://www.irgendwas.de/841">
<title>Text mit einem zerst& ouml;rten Umlaut ...</title>
Erik Hastens [ So, 29 Juli 2007 12:03 ] [ ID #1781423 ]

Re: Entfernen von HTML Entities für RSS Feed

Erik Hastens wrote:
> ... aber das scheint nicht richtig zu sein - vermutlich verstehe ich die
> Funktion nicht wirklich.
>
> htmlentities()
>
> scheint ja genau das Gegenteil von dem zu tun, was ich brauche.

War mal wieder zu ungeduldig, habe soeben

html_entity_decode()

gefunden, das scheints zu tun...

Gruß
Erik
Erik Hastens [ So, 29 Juli 2007 12:19 ] [ ID #1781424 ]

Re: Entfernen von HTML Entities für RSS Feed

Erik Hastens wrote:
> Es sollen Beiträge aus einer MySQL-Datenbank geholt werden, die dort im
> HTML-Format abgelegt sind; d.h., zB die deutschen Umlaute sind mit & ouml;
> etc. kodiert, und es sind auch HTML-Tags für Absätze etc. enthalten (im
> Rahmen des aktuellen Problems kommen mit gerade Zweifel, ob es überhaupt
> klug ist, das so in die Datenbank zu schreiben).

Die einfachste Möglichkeit, sowas RSS zu feeden, ist als CDATA:

....
<description>
<![CDATA[
<h1>This is HTML</h1>
<p>Blafasel ä</p>
]]>
</description>
....

(habe ich zB in <http://www.vibe.at/rss/> verwendet)

Hat den Vorteil, daß der Text von den RSS Readern schön formatiert angezeigt
wird (und natürlich den Nachteil, daß es nimmer plain text ist).

(falls es Reader gibt, die das nicht können, würde mich das übrigens
interessieren...)

Servus, Andreas
Andreas Labres [ Mo, 30 Juli 2007 08:40 ] [ ID #1782176 ]
PHP » de.comp.lang.php.misc » Entfernen von HTML Entities für RSS Feed

Vorheriges Thema: Euro Symbol in Grafik
Nächstes Thema: URLENCODE und URLDECODE bei +- und &-Zeichen