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:
- 5 Ideen wie Sie wiederkehrende Arbeitsschritte & Marketingprozesse gewinnbringend im Internet automatisieren! Ein Gastbeitrag von Robert Nabenhauer.
- Wachstum durch Facebook-Gewinnspiele: Wie Sie über Facebook virale Gewinnspiele & eine schnell wachsende Fangemeinde aufbauen
- Wie Sie aufmerksamkeitsstarke Prelaunch-, Launch- und Relaunch-Szenarien aufbauen und dabei Viralität, Spannung & Kaufkraft erzeugen
- Wie Sie waschechte Iphone-Apps mit PhoneGAP entwickeln, um am lukrativen App-Markt mitzumischen
- Wie Sie Ihr Shop-Sortiment so präsentieren, dass der Kunde in Zukunft mehr findet und eher kauft! Ein Gastbeitrag von Nicolas Schmidt-Voigt.
- 11 faszinierende BuddyPress-Plugins, um kostenlos aus WordPress ein soziales Netzwerk zu zaubern
- Die Vorboten einer neuen Internet-Industrie! Ein exklusiver Rückblick & Blick hinter die Kulissen der Clickbank-Exchange 2011 in New York.


Noch keine Kommentare vorhanden!