host stimmt nicht nach file_get_contents

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

  • host stimmt nicht nach file_get_contents

    Hallo,

    ich hoffe jemand kann mir weiter helfen. Hab schon eine weile gesucht aber nichts gefunden was zum Ziel führt...

    Wenn ich z.B. file_get_contents auf goggle mache, wird aus denn Links, bei denen "http://google.de" fehlt, "http://mein-server.de"

    PHP-Code:
    $url "http://google.de/index.html";
    $content file_get_contents($url);
    echo 
    $content
    Wie mache ich es das die original Links angezeigt werden? Bzw. die Seite komplett geladen wird?? z.B. siehe google-Logo

    MfG

  • #2
    Na, die Links entsprechend anpassen. Dafür braucht man nicht suchen, sondern nur logisch denken.

    Jetzt wo du weißt, was zu tun ist, kannst du nochmal drüber nachdenken und ggf. nach einer Lösung suchen...

    Kommentar


    • #3
      Hmm naja logisch erscheint mir das ja auch... ich müsste nur (wie zb. bei google unter "Mehr...") vor "/intl/de/options/" ein "http://google.de" stellen.

      Aber wie mach ich das am besten?

      Eine Idee die mir da einfällt wäre die $content durch str_replace schicken und immer die links oder so ersetzen. Is aber nicht das was du im Kopf hast oder?

      Kommentar


      • #4
        ein string replace kommt dem schon ziemlich nah. Nur frage ich mich, was du ersetzen willst.

        preg_replace wäre vielleicht sinniger, oder???

        Kommentar


        • #5
          Ok ich hab eine Lösung ist aber leider nicht mit preg_replace.... Aber scheint zu funktionieren. Kann ich das so lassen oder sollte ich es doch anders machen?

          PHP-Code:
          $url "http://google.de/index.html";
          $content file_get_contents($url);

          $content str_replace('href="/''href="http://'.$host.'/'$content);
          $content str_replace("href='/""href='http://".$host."/"$content);
          $content str_replace('href=/''href=http://'.$host.'/'$content);

          $content str_replace('src="/''src="http://'.$host.'/'$content);
          $content str_replace("src='/""src='http://".$host."/"$content);
          $content str_replace('src=/''src=http://'.$host.'/'$content);

          echo 
          $content

          Kommentar


          • #6
            Wenn du den Code nicht zu redundant, unsauber, unskalierbar findest, lass es ruhig so...

            Solltest natürlich noch berücksichtigen, dass mam auch HREF oder Href oder auch hreF schreiben könnte. Ab und zu lassen Leute die Anführungszeichen weg, usw... Aber das sind Ja nur wenige zusätzliche Zeilen...

            Außerdem sind nicht alle Links der Form a href="/dir/file.php" ab und zu kommt dir auch so was in die quere: file.php wenn du dann noch in nem Unterverzeichnis bist... Alles so kleinigkeiten...
            Zuletzt geändert von TobiaZ; 10.11.2007, 15:42.

            Kommentar


            • #7
              ok habe verstanden ist fürn arsch *g*

              aber wie ich das mit preg_replace machen soll is mir nicht ganz klar

              Kommentar


              • #8
                Na, alle Regeln, die du da oben definiert hast packst du "einfach" in eine Regex und gut ist.

                evtl reicht es auch aus, der neuen Seite ein base href zu geben...

                Kommentar


                • #9
                  Ah.. also so hier eventuell?

                  PHP-Code:
                  $url "http://google.de/index.html";
                  $content file_get_contents($url);

                  $parse_url = @parse_url($url);
                  $host $parse_url['host'];

                  $patterns[0] = '|href="/|U';
                  $patterns[1] = "|href='/|U";
                  $patterns[2] = '|href=/|U';
                  $patterns[3] = '|src="/|U';
                  $patterns[4] = "|src='/|U";
                  $patterns[5] = '|src=/|U';

                  $replacements[0] = 'href="http://'.$host.'/';
                  $replacements[1] = "href='http://".$host."/";
                  $replacements[2] = 'href=http://'.$host.'/';
                  $replacements[3] = 'src="http://'.$host.'/';
                  $replacements[4] = "src='http://".$host."/";
                  $replacements[5] = 'src=http://'.$host.'/';

                  $content preg_replace($patterns$replacements$content);
                  echo 
                  $content

                  Kommentar


                  • #10
                    mal ehrlich, das bringt dich doch kein stück weiter als stri_replace...

                    Hier ist jetzt erstmal Regex-Grundlagen Arbeit angesagt...

                    Kommentar


                    • #11
                      PHP-Code:
                      $content str_replace('<head>''<head><base href="http://google.de/" />'$content); 

                      Kommentar


                      • #12
                        Was ich sag.

                        Kommentar


                        • #13
                          Sorry, hatte ich übersehen.

                          Kommentar


                          • #14
                            ach du kacke... und ich hatte es am anfang immer so versucht und es ging nicht... man man ich dank euch!!

                            PHP-Code:
                            $url "http://google.de/index.html";
                            $content 'head><base href="http://google.de/" /></haed>';
                            $content .= file_get_contents($url);
                            echo 
                            $content

                            Kommentar


                            • #15
                              OffTopic:
                              Bist wahrscheinlich nicht der einzige.

                              Kommentar

                              Lädt...
                              X