|
Webseiten auslesen mit file();
Wie kann man andere Webseiten auslesen ? Dafür gibt es mehrere
Möglichkeiten. Die einfachsten will ich hier mal präsentieren.
Zum einen kann dies über den Befehl file(); realisiert
werden:
<?php $_url = "http://de.wikipedia.org/wiki/Hauptseite";
$_buffer = implode('', file($_url)); echo $_buffer; ?>
|
Mit Hilfe des File Befehls wird die Seite an der Zielurl eingelesen und mit
implode in ein echo(); fähiges Format umgewandelt.
Dann wird die Seite ausgegeben (der Inhalt). Dies kann unter umständen
bei euch auf eurem Webspace nicht aktiviert sein. Persönlich würde
ich eher zu der Curl Variante greifen, da Sie wesentlich mehr Funktionen
bietet.
Webseiten auslesen mit curl
Dies ist die elegantere Art, vorallem auch weil man $_POST Daten mit
übergeben kann und das ganze viel mehr wie einen regulären
Seitenaufruf aussehen lassen kann.
Weitere Informationen über Curl erhaltet Ihr direkt auf php.net (Klick).
<?php # ------------------------------------------------------------------- # (c) Charles Imilkowski # # Funktion: lädt mit Curl eine andere URL ein # ------------------------------------------------------------------- # $url = Internetadresse die eingelesen werden soll # $postdata = Die Daten die per $_POST mitgesendet werden sollen, # das Format entspricht einem $_GET String, wie man ihn # an eine URL anfügen würde # -------------------------------------------------------------------
function HomepageLaden($url, $postdata) { $agent = "Meine Browserkennung v1.0 :)"; $header[] = "Accept: text/vnd.wap.wml,*.*"; $ch = curl_init($url);
if ($ch) { curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
# mit den nächsten 2 Zeilen könnte man auch Cookies # verwenden und in einem DIR speichern #curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); #curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
if (isset($postdata)) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); }
$tmp = curl_exec ($ch); curl_close ($ch); } return $tmp; }
$_url = "http://de.wikipedia.org/wiki/Hauptseite"; $_buffer = HomepageLaden($_url, ""); echo $_buffer; ?>
|
RSS/XML Feeds auslesen und verwenden
RSS Feeds werden zumeist für Reader Programme bereit gestellt, damit man
direkt unter Windows lesen kann, was für neue Nachrichten es auf einer
bestimmten Webseite gibt. Hier streiten sich die Geister, ob man diese
Nachrichten auch von einer anderen Webseite lesen darf. Der Geist von RSS
ist es Nachrichten soweit wie möglich zu verteilen. Ich würde hier
raten im Einzelfall gerade bei kleineren Webseiten betreibern mal nachzufragen,
ob man diese Feeds auslesen darf in PHP.
Hier lesen wir zum Beispiel den XML Feed von Wetter.com aus.
<?php # ------------------------------------------------------------------- # (c) Charles Imilkowski # # Funktion: lädt einen XML/RSS Feed und speichert das Objekt als Array # -------------------------------------------------------------------
function object2array($object) { $return = NULL;
if(is_array($object)) { foreach($object as $key => $value) $return[$key] = object2array($value); } else { $var = get_object_vars($object);
if($var) { foreach($var as $key => $value) $return[$key] = object2array($value); } else { # strval and everything is fine return strval($object); } } return $return; }
$_feed = "http://wetter.com/wetter_rss/wetter.xml"; $xml_obj = simplexml_load_file ($_feed); $xml_arr = object2array($xml_obj);
?>
|
In diesem Beispiel habe ich noch eine Funktion eingefügt, die aus einem
Objekt ein Array macht. Ihr habt dann die Daten vom XML/RSS Feed sowohl als
Objekt, als auch als Array vorliegen. Entscheidet selbst womit Ihr selbst
weiterarbeiten wollt und womit nicht ;-)
Achtung: das Auslesen von fremden Webseiten sollte immer
abgesprochen werden. Einfach fremde Inhalte einzubinden kann unter umständen
eine Copyrightverletztung sein und viele teure Probleme nach sich ziehen. Schreibt
dem Homepage Besitzer eine E-Mail und bittet um Erlaubnis !
|