bituniverse.com Foren-Übersicht bituniverse.com
Entwickler Forum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Scriptausgabe nachträglich im Script bearbeiten

 
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Code-Schnipsel
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Simon W.
Anti-verdenglischungs-Abgeordneter


Anmeldedatum: 05.11.2007
Beiträge: 283
Wohnort: Aachen

BeitragVerfasst am: Fr 16 Nov, 2007 02:05    Titel: Scriptausgabe nachträglich im Script bearbeiten Antworten mit Zitat

Häufig wird die Frage gestellt, wie man bestimmte Operationen automatisch auf der Ausgabe eines Scripts ausführen lassen kann, bevor die Daten zum Browser gesendet werden.

Ein Beispiel dafür ist die automatische Ersetzung von Links im Stil 'http://...' auf der Seite durch den aktuellen Titel der Seite, auf die sie verweisen. Dieses Verfahren ist hierfür jedoch nur mäßig geeignet, da die HTTP-Anfragen auf die Zieladressen der Links teilweise recht lange dauern können und somit das Ende des gesamten Scripts verzögern.


Code:
  1. <?php
  2.     // preg_replace-callback Funktion
  3.     // Ersetzt http://-Links durch den richtigen Seitentitel
  4.     function generate_linktitle($linkmatch) {
  5.         $fulllink   = $linkmatch[1];
  6.         $target     = $linkmatch[2];
  7.         // file_get_contents ruft die Seite $target, auf die der Link zeigt, ab.
  8.         // Hier könnten daher Zeitprobleme auftreten, wenn das Ziel nicht erreichbar
  9.         // ist oder nur langsam reagiert.
  10.         $filecontent = @file_get_contents($target);
  11.         if ($filecontent) {
  12.             // Aus dem Seiteninhalt den Titel auslesen
  13.             preg_match('#<title>(.*)</title>#U',$filecontent,$matches);
  14.             $pagetitle = $matches[1];
  15.             // Den verlinkten Text durch die Seitenüberschrift ersetzen.
  16.             return $fulllink.$pagetitle.'</a>';
  17.         }
  18.         // URL war ungültig oder Host nicht erreichbar, kompletten Link unverändert lassen.
  19.         return $linkmatch[0];
  20.     }
  21.     // OutputBuffer-Handler - ersetzt Links mit Hilfe von generate_linktitle()
  22.     function generate_linktitles_ob($content) {
  23.         $content = preg_replace_callback(
  24.             '#(<a.*href *= *["\'](http://.*)["\'].*>)(http://.*)</a>#U',
  25.             'generate_linktitle',
  26.             $content);
  27.         return $content;
  28.     }
  29.     // Initialisiert den OutputBuffer-Handler zum Ersetzen von Links.
  30.     function generate_linktitles() {
  31.         ob_start('generate_linktitles_ob');
  32.     }
  33.  
  34.     // Ab hier werden nun alle Links automatisch untersucht.
  35.     generate_linktitles();
  36. ?>
  37.  
  38. <a href="http://www.google.de">http://www.google.de</a><br />
  39. <a href="http://www.web.de">http://www.web.de</a><br />
  40. <a href="http://www.ebay.de">http://www.ebay.de</a><br />

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> Code-Schnipsel Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB2.de
Powered by WebRing.