Seite "einlesen" und "verarbeiten" ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Seite "einlesen" und "verarbeiten" ?

    Hi
    Zur Zeit beschäftige ich mich mit dem Einlesen von Homepages und deren Verarbeitung... noch nicht lange, aber ich tu's halt.
    Ich mach das zur Zeit so:

    PHP-Code:
    <?php
    $Seite 
    'http://www.google.de';

    $Read implode('',file($Seite));

    echo 
    $Read;
    ?>
    Damit bekomme ich ja den kompletten HTML Code einer Homepage.
    Jedoch wenn in der Homepage relative Links / sonstiges benutzt wird, dann haut das nicht hin, weil der die Daten dann aufm localhost / wo auch immer ich das benutz - sucht..
    Ich hab schon probiert mit str_replace('href=/','href='.$Seite.'/',$Read); das zu "umgehen", aber das funktioniert nicht so wie ich es mir gedacht hatte, da es zu komplikationen mit Links wie href="lol.php" oder href="../lol/" kommt...

    Kennt jemand ne bequemere Lösung für mein Problem? Oder hat jemand schonmal ne Funktion oder aehnliches dafür geschrieben, und kann sie mir zufaellig zukommen lassen?

    MfG & Danke für die Hilfe...

  • #2

    http://www.php-faq.de/q/q-regexp-links-absolut.html

    Kommentar


    • #3
      Ops.. ich hab bei Google nur komische Sachen gefunden....

      Thx..^^

      EDIT:

      Tested, und failed..

      Bei nem <link ... CSS ändert der den relativen Pfad nicht.. hab das genaue Beispiel übernommen, nur halt die URL geändert... :/
      Zuletzt geändert von Massenhysterie; 15.10.2006, 20:15.

      Kommentar


      • #4
        hausaufgabe: finde heraus warum und ergänze das skript.

        Kommentar


        • #5
          Schon fertig... :P
          Externe JS funktionieren auch nicht...
          PHP-Code:
          <?php
          // Datei über HTTP aufrufen
          $url 'http://www.server.de/test.php';
          $old implode(''file($url));

          // Links suchen und an absolute() weiterleiten
          $new preg_replace(',<a([^>]+)href="([^>"\s]+)",ie',
              
          '"<a\1href=\"" . absolute("\2", $url) . "\""',
              
          $old);
          $new preg_replace(',<link([^>]+)href="([^>"\s]+)",ie',
              
          '"<link\1href=\"" . absolute("\2", $url) . "\""',
              
          $new);
          $new preg_replace(',<script([^>]+)src="([^>"\s]+)",ie',
              
          '"<script\1src=\"" . absolute("\2", $url) . "\""',
              
          $new);

          // HTML-Code ausgeben
          echo $new;

          // Funktion, die relative in absolute Links umschreibt
          function absolute ($relative$absolute) {

              
          // Link ist schon absolut
              
          if (preg_match(',^(https?://|[url]ftp://[/url]|mailto:|news:),i'$relative))
                  return 
          $relative;

              
          // parse_url() nimmt die URL auseinander
              
          $url parse_url($absolute);

              
          // dirname() erkennt auf / endende URLs nicht
              
          if ($url['path']{strlen($url['path']) - 1} == '/')
                  
          $dir substr($url['path'], 0strlen($url['path']) - 1);
              else
                  
          $dir dirname($url['path']);

              
          // absoluter Link auf dem gleichen Server
              
          if ($relative{0} == '/') {
                  
          $relative substr($relative1);
                  
          $dir '';
              }

              
          // Link fängt mit ./ an
              
          elseif (substr($relative02) == './')
                  
          $relative substr($relative2);

              
          // Referenzen auf höher liegende Verzeichnisse auflösen
              
          else while (substr($relative03) == '../') {
                  
          $relative substr($relative3);
                  
          $dir substr($dir0strrpos($dir'/'));
              }

              
          // volle URL zurückgeben
              
          return sprintf('%s://%s%s/%s'$url['scheme'], $url['host'], $dir$relative);
          }
          ?>
          Vllt wärs auch eleganter gegangen, hab jedoch von reg.expressions keine Ahnung..


          mfG

          (Oder hat jmd von euch noch Verbesserungsvorschläge )

          Kommentar

          Lädt...
          X