Problem mit ereg_replace

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

  • Problem mit ereg_replace

    Hi Ihrz!

    Also ich hab ein Problem mit dem ereg_replace Tag in meinem Script. Der gibt mir keine Fehler oder dergleichen aus, aber der tut auch nicht wozu ich ihn mit dem ereg_replace Tag anweise.

    Zu dem Script Das ist Teil eines Formulars, in dem ich 2 Dateien erstelle. Die 1. Datei ist eine Website, die 2. eine .txt Datei. Die 1. Datei wiederrum hat irgendwo im Sourcecode (den ich mittels implode Tag aus der source.txt in die Datei schreiben lasse) den Tag
    PHP-Code:
    <?php  include("txt/1");?>
    . Mittels des unten angegebenen Scripts möchte ich nach diesem Tag suchen lassen und ihn durch den Inhalt der Variable $txt ersetzen lassen (siehe Kommentar). Das ganze will aber nicht so wie ich will.

    Ich wußte auch nicht wie ich ohne den "Umweg" über die Source.txt gehen soll, da die Datei html Tags enthält, die, wenn ich sie direkt ins untere Script einfüge, vom Script ja nicht in die 1. Datei geschrieben sondern interpretiert werden. Da die source.txt leider statisch ist wollte ich halt, nachdem der Code in die neue Datei mittels implode geschrieben wurde, die neue Datei nochmal aufmachen und halt nach besagtem (
    PHP-Code:
    <?php  include("txt/1");      ?>
    ) Tag suchen und durch den Inhalt der Variablen $txt ersetzen lassen, womit das Probelm der statischen source.txt umgangen wäre. Aber das klappt ja leider nicht

    Wer den Inhalt der source.txt braucht, den findet ihr hier

    Wenn ihr nen anderen Weg kennt das ganze zu realiesieren (Script das Datei eins (fertige php Datei) erstellt, das txt datei erstellt, die in Datei 1 angezeigt wird. Ausserdem kann mittels des unteren Codes der Inhalt der anzulegenden txt Datei bestimmt werden. Der untere PHP Code ist der php-Teil eines Formulars das die im Formular angegebenen Sachen interpretiert und ausführt)

    Ich wäre dankbar für Hilfe

    PHP-Code:
    <?php
    if(isset($_POST['FileName'])) {
    $name=$_POST['FileName'];
    };
    if(isset(
    $_POST['txt'])) {
    $txt=$_POST['txt'];
    };
    if(isset(
    $_POST['lyrics'])) {
    $lyrics=$_POST['lyrics'];
    };
    ?>
    <?php
    $VordefinierterInhalt 
    implode("\n",file("txt/textdatei.txt"));
    $fp fopen($FileName,"w"); 
    if (!
    $fp) {
        print 
    "File $FileName konnte nicht angelegt werden<br>\n";
    } else {
       
    $zeile $VordefinierterInhalt "\n";
       
    fputs($fp$zeile);
       
    fclose($fp);
    chmod ($FileName0777); 
    }
    $fp fopen($txt,"w"); 
    if (!
    $fp) {
        print 
    "File $txt konnte nicht angelegt werden<br>\n";
    } else {
       
    $zeile $lyrics "\n";
       
    fputs($fp$zeile);
       
    fclose($fp);
    chmod ($txt0777); 
    }

     
    $inhalt file($FileName);
    foreach( 
    $inhalt as $zeile ) {
     
    $zeile ereg_replace("/txt\/1/"$txt$zeile); // <-- Hier sitzt der Fehler
    }
    ?>

  • #2
    ereg_replace("/txt/1/", $txt, $zeile);

    1. ist das die Syntax vom preg, bei ereg ist die //-Klammerung nicht nötig; im Gegenteil: Sie gehört mit zum Suchstring.

    2. selbst beim preg_replace müsstest du den / zwischen "txt" und "1" mit einem \ escapen: preg_replace("/txt\/1/", ...) oder ein anderes Zeichen als Anfang/Ende nehmen: preg_replace("%txt/1%", ...)

    3. Wenn der Name immer der gleiche ist, warum benutzt du nicht str_replace?!? Das geht schneller und unkomplizierter.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Willst Du den Inhalt im File selbst ändern? Dann in etwa so ...
      PHP-Code:
      <?php
      if(isset($_POST['FileName'])) {
         
      $name=$_POST['FileName'];
      };
      if(isset(
      $_POST['txt'])) {
         
      $txt=$_POST['txt'];
      };
      if(isset(
      $_POST['lyrics'])) {
         
      $lyrics=$_POST['lyrics'];
      };

      $VordefinierterInhalt implode("\n",file("txt/textdatei.txt"));
      $fp fopen($FileName,"w");
      if (!
      $fp) {
          print 
      "File $FileName konnte nicht angelegt werden<br>\n";
      } else {
         
      $zeile $VordefinierterInhalt "\n";
         
      fputs($fp$zeile);
         
      fclose($fp);
         
      chmod ($FileName0777);
      }
      $fp fopen($txt,"w");
      if (!
      $fp) {
          print 
      "File $txt konnte nicht angelegt werden<br>\n";
      } else {
         
      $zeile $lyrics "\n";
         
      fputs($fp$zeile);
         
      fclose($fp);
         
      chmod ($txt0777);
      }

      // ............... File updaten ...............
      // File lesen und Inhalt in einen Array sichern
      $fp fopen($FileName,"r");
      if (!
      $fp) {
          print 
      "File $FileName existiert nicht !<br>\n";
      } else {
          while (!
      feof($fp)) {
              
      $sichern[] = fgets($fp4096); // File zeilenweise in Array sichern
          
      }
          
      fclose($fp);

          
      // gesichertes Array lesen und Inhalte in File zurückschreiben
          
      $fp fopen($WhichFile,"w"); // File zum Schreiben öffnen
          
      for ($i=0;$i<sizeof($sichern);$i++) { // Array lesen 
              
      $zeile ereg_replace("txt/1"$txt$sichern[$i]); // Inhalte ersetzen
              
      fputs($fp$zeile); // in File zurückschreiben
          
      }
          
      fclose($fp);
      }
      ?>

      Kommentar

      Lädt...
      X