Externen RSS Feed in Homepage über PHP einbinden

Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 
Script Seite

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 ICQ Generator
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog Verzeichnis

Partner
Sprüche Treff

speicherzentrum.d...
Bei den Anbieter bekommt man Webspace, Domains und...
http://www.speicherzentrum.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
http://www.Artfiles.de
 
 
 

Externen RSS Feed in Homepage über PHP einbinden

Sie befinden sich: Home > Php Tutorial > Externen RSS Feed in Homepa...

Externen RSS Feed in Homepage über PHP einbinden



Eintrag am:  27.10.2010
Hits / Besucher:  12378
Sprache: Deutsch
Kategorie:  Fortgeschrittene Tut...
Tutorial Art:  eigenes
Eingetragen von   � 
 

Beschreibung


So in diesem PHP Tutorial möchte ich euch zeigen, wie man einen externen RSS-Feed auf eurer eigenen Homepage einbinden könnt. Dieses Tutorial setzt darauf auf, dass ihr bereits euch mit den Tutorial "Datei Cache mit PHP erstellen" auseinandergesetzt habt. Gut fangen wir an mit der Materie, um Daten von einer externen Feed einzulesen, benötigen wir die Adresse wo wir die Daten abfragen wollen.

In unserem Beispiel verwenden wir den Webmasterfeed von dieser Seite. Dieser Feed wird als ISO-Datei ausgeliefert, da ich bei meiner Testmaschine Xampp verwenden und diese mit den Zeichensatz UTF-8 arbeitet müssen wir die Ausgabe vorher konvertieren. Dazu habe ich im nachfolgenden Script, die PHP-Funktion iconv() verwendet. Sicherlich kann es bei den ein oder anderen zu anderen Verschiebungen kommen. Daher sollte ihr als erstes in den Quelltext des Feeds schauen und prüfen, welcher Zeichensatz bei den Feed verwendet wird. Danach müsst ihr überprüfen ob der gleiche Zeichensatz auf euren Webserver läuft. Wenn ihr unterschiedliche Zeichensätze habt, kann es passieren dass die Umlaute bzw. Sonderzeichen sehr kryptisch aussehen.

Hier nun das Script:

<?php
    
/**
    * Include der Cache Funktionen
    */
    
include('function.php');
    
/**
    * ISO zu Utf8 umwandeln
    * 1 = ja, 2 = nein
    */
    
$iso_to_utf8 1;
    
/**
    * Name der Cachedatei
    */
    
$dateiname 'feed';
    
/**
    * Url zum Feed
    */
    
$feed 'http://www.php-space.info/feed.xml';
    
/**
    * Wie oft der Feed abgefragt werden soll in
        Sekunden
    * 300 = 5 Min
    */
    
$cachzeit 300;
    
/**
    * Status ausgeben, wann der Feed das letzte mal
        eingelesen wurde
    * 1 = ja, 2 = nein
    */
    
$status 2;
    
/**
    * Prüfen ob eine Cachedatei geschrieben werden muss
    */
    
if (cachen_check($dateiname$cachzeit ) == true) {
        
$ausgabe '';
        
/**
        * Mit der PHP Funktion simplexml_load_file()
            wird der Feed eingelesen und in der
            Variable $xml als Objekt hinterlegt.
            Sollte es Fehler beim einlesen geben,
            gibt die PHP Funktion
            simplexml_load_file() ein false zurück.
        */
        
$xml = @simplexml_load_file($feed,
            
"SimpleXMLElement"LIBXML_NOCDATA);
        
/**
        * Nun prüfen wir, ob ein false zurückgegeben
            wurde
        */
        
if ($xml === false) {
            
$ausgabe .= 'Fehler beim einlesen des
                Feed! Prüfen Sie die Url zum Feed
                oder ob es den Feed noch gibt.<br>'
;
        } else {
            
/**
            * Wenn kein false von der PHP Funktion
                simplexml_load_file() zurückgegeben
                wurde, durchlaufen wir mit einer
                foreach das Array, was in den Objekt
                $xml->channel->item  gespeichert wurde.
            */
            
foreach($xml->channel->item as $k => $v) {
                
/**
                * Nun wird in der Variable $ausgabe
                    unserer Ausgabe gespeichert.
                */
                
$ausgabe .= '- <a href="'.$v->link.'"
                    target="_blank"
                    title="'
.$v->title.'">'.$v->title.
                    
'</a><br>';
            }
            
/**
            * Jetzt prüfen wir die Variable
                $iso_to_utf8, ob wir unsere Ausgabe
                in einen anderen Zeichensatz
                umwandeln wollen.
            */
            
if ($iso_to_utf8 == 1) {
                
/**
                * Ausgabe ISO zu UTF-8 umwandeln
                */
                
$ausgabe iconv("UTF-8",
                    
"ISO-8859-1//TRANSLIT"$ausgabe );
            }
        }
        
/**
        * Hier wird geprüft, ob ein Statusmeldung vom
            Feed ausgegeben werden soll.
        */
        
if ($status == 1)
        
$ausgabe .= '<p>Der Feed wurde am
            '
.date("d-m-Y um H:i:s").' Uhr das
            letzte mal eingelesen.</p>'
;
        
/**
        * Cache schreiben
        */
        
cachen($dateiname$cachzeit $ausgabe );
    } else {
        
/**
        * Cache lesen
        */
        
$ausgabe cachen($dateiname$cachzeit '' );
    }
    
/**
    * Text ausgeben
    */
    
echo $ausgabe;
?>

Erklärung:

Nun kommen wir zu der Erklärung, wie ihr im oberen Teil seht, habe ich ein include() eingebaut. Dort lade ich die Funktionen von den vorhergehenden Tutorial. Diese Funktionen werden benötigt um den Cache zu prüfen, bzw. zu erstellen. Im nächsten Abschnitt habe ich die Variable $iso_to_utf8 definiert, diese könnt ihr erstmal so lassen. Nach dem Ihr, das Script auf den Server geladen habt und die Umlaute kryptisch dargestellt werden, sollte Ihr gegebenenfalls den Wert ändern auf 2. Dadurch wird iconv() nicht verwendet und die Ausgabe nicht umgewandelt. Mit der Variable $dateiname definieren ich meine Cachedatei, wo entsprechend die Ausgabe zwischengespeichert wird. Man könnte hier zusätzlich den Namen mit der PHP-Funktion md5() verschlüsseln, damit niemand zu schnell auf den Namen unserer Cachedatei kommt. Ob dies aber Sinn macht, sein mal dahin gestellt. :)

In der nächsten Zeile definiere ich in der Variable $feed unserer Adresse zu der XML-Datei. Diesen Pfad könnt ihr x-beliebig anpassen, wichtig ist nur hierbei, dass die Datei auch wirklich vorhanden ist. Über die nächste Variable $cachzeit kann man die Zeit definieren, wie lang unser Cache verwendet werden soll. Die Zeit wird in Sekunden angegeben. Zum Beispiel wenn man 300 der Variable hinterlegt werden dies 5 min. Um das Script zu prüfen, gibt es die Variable $status, wo man den Wert 1 oder 2 definieren kann. Wenn man den Wert auf 1 stellt, wird unter der Ausgabe des Feeds, die Aktualisierungszeit mit ausgegeben. Dies ist hilfreich, um herauszufinden, ob der Feed zuletzt aktualisiert wurde. Wenn ihr diese Meldung nicht angezeigt haben wollt, könnt ihr die Variable auf 2 belassen.

Auf dem weiteren Code gehe ich nicht mehr im Detail ein, da ich bereits ausführliche Kommentare geschrieben habe. Ich hoffe ihr versteht meine Kommentare. xD

Als kleine Anmerkung für die Leute, die dieses Skript nicht unter Windows einsetzen. Ihr müsst entsprechend der Cachedatei sowie der Datei, wo der Code entsprechend eingebunden wurde, die Rechte 777 oder für die Sicherheitsfreaks 755 geben, da andernfalls PHP keine Schreibrechte hat. So dies soll es erst mal gewesen sein und ich hoffe ihr könnt mit diesen kleinen Tutorial etwas anfangen. Wenn ihr noch weitere Fragen zu diesem Tutorial haben solltet oder vielleicht sogar einen Fehler gefunden habt, würde ich mich freuen, wenn ihr euch bei mir im Forum melden könntet.

 

Tags


 

Verlink uns, wenn Dir das Tutorial gefallen hat:
Artikel hinzufügen bei: