str_replace...

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

  • str_replace...

    Hallo,

    folgendes Problem. Ich lese eine Datei von einem entfernten server per readfile ein, da sich in der Datei db-abfragen befinden. Nun möchte ich bestimmte strings ersetzen, aber das klappt nicht. Das einzige was ausgegeben wird ist die Zahl 20684.
    Was stimmt da nicht?

    $headerFileContent = readfile("http://www.einedomain.de/top_frame.php","r");

    echo $headerFileContent = str_replace("./library/images","images",$headerFileContent);

    Ein weiteres Problem ist, dass beim Einlesen der Datei die relativen Pfade möglichst in absolute umgewandelt werden sollten, so dass beispielsweise aus "./library" ein "http://www.einedomain.de/library" wird. Dann kann ich die Links, die in der Datei relativ sind, nutzen.

    Ich hoffe, ich konnte das Problem einigermaßen gut darstellen.
    Danke schonmal im Voraus.

    Rainer

  • #2
    Re: str_replace...

    Ich lese eine Datei von einem entfernten server per readfile ein, da sich in der Datei db-abfragen befinden. Nun möchte ich bestimmte strings ersetzen, aber das klappt nicht. Das einzige was ausgegeben wird ist die Zahl 20684.
    Was stimmt da nicht?

    $headerFileContent = readfile("http://www.einedomain.de/top_frame.php","r");
    weil readfile etwas ganz anderes macht, als das wozu du es einsetzen willst.
    zitat php-manual (lesen bildet):
    "Liest den Inhalt einer Datei und schreibt ihn in den Ausgabepuffer.
    Gibt die Anzahl der gelesenen Bytes einer Datei zurück."

    also steht dann logischerweise in $headerFileContent die anzahl der bytes drin, 20684, und nicht der inhalt der datei.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Willst Du fremde Sourcen klauen oder warum machst Du das remote?
      Da Du ja mit
      PHP-Code:
      <?php
      $headerFileContent 
      readfile("http://www.einedomain.de/top_frame.php");
      ?>
      Die filesize erreichst der ausgegebenen Datei kannste Dir ja mit fopen und fread, etc. Weiterhelfen...
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        Hallo,

        readfile habe ich als Tipp von einem Bekannten und da mir diese Topframe-seite angezeigt wurde, habe ich mich mit der Funktion nicht näher beschäftigt.

        Nein, ich will keine fremden Sourcen klauen. Es handelt sich um ein Intranet und diese Topframe-seite muss auf allen Seiten erscheinen, egal auf welchem server sie liegen.

        Da ich normalerweise cfml programmiere und gerade erst mit php anfange, weiß ich Vieles natürlich noch nicht.
        Mit fopen habe ich es auch schon ausprobiert und das haut irgendwie auch nicht hin.....

        Kommentar


        • #5
          ....sooo, ich hab' es jetzt wenigstens schon mal geschafft, dass die Datei mit fopen ausgelesen wird, aber was ist mit meiner eigentlichen Frage? str_replace funzt einfach nicht. Hier der neue Code:
          PHP-Code:
              $filename "http://einedomain.de/top_frame.php";
              
          $headerFileContent fopen($filename,"r");
              
          $headerFContent fread($headerFileContent,21000);
              
          fclose($headerFileContent);
              
          $headerContent str_replace("./library/images","images",$headerFContent);
          echo 
          $headerContent
          Danke,
          Rainer

          Kommentar


          • #6
            1. was steht in $headerFContent drin. ist das der korrekte inhalt?

            2. ist ./library/images überhaupt im string enthalten?
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              was machst du denn, wenn die datei mal mehr als 21.000 byte hat?
              PHP-Code:
              fread($headerFileContent,filesize($filename)); 
              wär besser denk ich

              sicher, dass die links überhaupt so drin stehen? mach doch mal ein
              PHP-Code:
              echo $headerFContent
              und such da nach dem text
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Ich hab' mir den Quelltext angeschaut und es steht alles drin, was drinstehen soll.
                "./library/images" ist auch enthalten. Am liebsten wär's mir natürlich, wenn da "http://einedomain.de/library/images" drinstehen würde(wie oben schon erwähnt brauche ich ja den absoluten Pfad, wg. der links).

                Is' schon eigenartig...

                Kommentar


                • #9
                  und wenn du

                  PHP-Code:
                  echo $headerContent str_replace("./library/","",$headerFContent); 
                  machst, sollte kein ./library mehr stehen. teste das mal so.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    ...jau, soweit geht's jetzt(Hatte mich verschrieben...... ).
                    Danke für die schnellen Antworten.

                    Gibt es denn eine Möglichkeit, in dem Moment, wo man sich die Datei holt, die relativen Pfade in absolute Pfade umzuwandeln. In cfml schreibt man resolveurl=yes und dann wird sozusagen vorne an den relativen Pfad automatisch das "http://.......usw." angehängt.

                    Kommentar


                    • #11
                      so müsstest du den absoluten pfad eigentlich recht schnell reinkriegen:
                      PHP-Code:
                      echo $headerContent str_replace("./library/","http://www.domaind.tld/",$headerFContent); 
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Daran hatte ich ja auch schon gedacht, doch leider gibt es auch viele Links in dieser Datei, die natürlich jetzt auf meinen server zeigen, natürlich auf Verzeichnisse, die auf dem anderen server liegen. Deshalb bräuchte ich praktisch etwas Ähnliches, wie in cf. Dann wäre automatisch vor allen links die Adresse des anderen servers.

                        Kommentar


                        • #13


                          warum zeigen die auf deinen server?

                          realtive urls in der datei wandelst du mit str_replace um in absolute (auf den anderen server)
                          absolute links in der datei wandelst du nicht um

                          oder?
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            ja, Du hast schon Recht, solange es sich um Links handelt, die nur auf ein Verzeichnis deuten. Wenn die aber auf mehrere verzeichnisse deuten, dann brauche ich natürlich für jeden Link einen str_replace. Und da, dachte ich, würde es eine "Vereinfachung" geben. Aber wenn es sowas nicht gibt, dann werd' ich's halt mit mehreren replaces machen

                            Kommentar


                            • #15
                              PHP-Code:
                              $headerFContent=str_replace('href="./','href="http://www.domaind.tld/',$headerFContent); 
                              geht's so nich?
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X