Textauszüge für RSS-Feeds erstellen

Werbung

Markus Christian Koch

Die immer beliebter werdenden RSS-Feeds haben so ihre Tücken, besonders wenn es um das Anfertigen von Textauszügen geht. Wer nicht gerne HTML-Tags in den Überschriften oder Abstracts des Newsreaders sieht, kann sich mit der hier vorgestellten Lösung behelfen.

Immer mehr Websites bieten eine Zusammenfassung ihrer Inhalte via Newsfeed an. Hierbei handelt es sich um eine XML-Datei, welche die neuesten Meldungen in Überschriften und Kurzfassungen enthält. Um beispielsweise aus dem in der Variable $hometext gespeicherten Textinhalt (welcher auch Formatierungsangaben und HTML z.B. in Form von Tabellen oder Hyperlinks enthalten kann) einen Teaser aus den ersten 300 lesbaren Zeichen zu generieren genügt folgender PHP-Ausdruck:

 $hometext=substr(htmlspecialchars(strip_tags
(html_entity_decode($hometext))),0,300);

Diese Zeile befreit zuverlässing $hometext von unerwünschten Layoutinformationen, es bleibt die reine Textinformation übrig. Natürlich kann man den vorgestellten Ausdruck auch in Einzelschritten notieren, hier das Skript en detail:

      $hometext=html_entity_decode($hometext)
/* wandelt
alle in $hometext enthaltenen HTML-Zeichenkodierungen in ihr Äquivalent:
aus ä wird ä, aus Uuml; wird Ü, etc. Diese Schreibweise wird
in XML verlangt! */
      $hometext=strip_tags($hometext)
/* entfernt
nun alle HTML-Tags aus $hometext. */
      $hometext=htmlspecialchars($hometext)
/*
nimmt nun eine Ersetzung der HTML-Sonderzeichen vor: aus "&" wird
"&", aus """ wird """. */
      $hometext=substr($hometext,0,300)
/*
liest die ersten 300 Zeichen beginnend bei 0 aus. */

Auf diese Weise lassen sich bei der Ausgabe jeder Art von Text unerwünschte Formatierungen entfernen. Leider funktioniert das vorgestellte Skript erst ab PHP 4.3.0; in den Vorversionen fehlt die Unterstützung von html_entity_decode(). Abhilfe wird durch eine selbstgebaute Funktion htmlentitydecode() geschaffen:

      function
htmlentitydecode($string) {
 $trans_tbl = get_html_translation_table (HTML_ENTITIES);

$trans_tbl = array_flip ($trans_tbl);
 return strtr ($string, $trans_tbl);
}
      /*
Aufruf mit */
$hometext = htmlentitydecode($hometext);

Diese sollte unter allen PHP-Versionen funktionieren. Eine so von Layoutelementen bereinigte Inhaltsangabe lässt sich vielfältig einsetzen; gedacht ist sie in der vorliegenden Form für XML-konforme Newsfeeds. Das Beispielskript erstellt einen Textauszug aus dem Quelltext (nahezu) beliebiger Webseiten.

      /*
Der vollständige Aufruf mit Versionsabfrage */ if(strcmp('4.3', phpversion())
> 0) {
 /* PHP Ver. < 4.3.0 */
 $hometext = htmlentitiesdecode($hometext);

$hometext = htmlspecialchars(strip_tags($hometext));
 } else {
 /* PHP Ver.
>= 4.3.0 */
 $hometext =
htmlspecialchars(strip_tags(html_entity_decode($hometext)));
}

Weitere Beiträge:

Über Gastautor

DrWeb.de ist die "Grande Dame" des deutschen Bloggings und seit nunmehr 14 Jahren im Internet aktiv. Das beliebte Magazin richtet sich dabei an Webworker, Selbstständige, IT-Entscheider, Seitenbetreiber sowie Marketing-Verantwortliche und bietet einen Überblick im undurchdringlichen Dschungel zahlreicher "Geld verdienen im Internet" Konzepte. Werden Sie jetzt Gastautor und profitieren Sie von der großen Reichweite und den Markennamen DrWeb.de.

,

Noch keine Kommentare vorhanden!

Hinterlasse eine Antwort

Bitte bei weiteren Kommentaren per Email benarichtigen! Auch möglich: Abo ohne Kommentar.

Spam protection by WP Captcha-Free