Heinz: PHP-Datei bearbeiten.

Hallo!

Also, ich habe folgendes Problem: Ich habe eine .php Datei und darin befinden sich sowohl HTML-Tags als auch PHP-Befehle und an einer Stelle eine Zeichenfolge die Ersetzt werden soll. zB. ||1||

Ich möchte nun mit einer zweiten Datei diese Datei nehmen, das Zeichen ||1|| ersetzen durch eine andere Zeichenfolge (zB. "<h1>Test</h1>") und dann woanders abspeichern. Dabei sollen alle PHP-Befehle UND Html Tags erhalten bleiben. Ist so etwas möglich? Mir zerhaut es immer irgendwas...

Ich freue mich auf eine Antwort.
MfG!

  1. Lieber Heinz,

    Mir zerhaut es immer irgendwas...

    und was hast Du bisher probiert?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Hi!

    Also, ich habe folgendes Problem: Ich habe eine .php Datei und darin befinden sich sowohl HTML-Tags als auch PHP-Befehle und an einer Stelle eine Zeichenfolge die Ersetzt werden soll. zB. ||1||

    Was hast Du bislang versucht?

    Ich möchte nun mit einer zweiten Datei diese Datei nehmen, das Zeichen ||1|| ersetzen durch eine andere Zeichenfolge (zB. "<h1>Test</h1>") und dann woanders abspeichern. Dabei sollen alle PHP-Befehle UND Html Tags erhalten bleiben. Ist so etwas möglich?

    Ja es ist möglich, sogar sehr gut mit PHP.

    Mir zerhaut es immer irgendwas...

    Was denn?

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  3. Ciao!

    $datei1 = file('datei1.php');
    $datei2 = fopen('datei2.php', 'w');
    for ($i = 0; $i < count($datei1); $i++) {
      $zeile = preg_replace('/||1||/', '<h1>Test</h1>', $datei1[$i]);
      fwrite($datei2, $zeile);
    }
    fclose($datei2);

    Meinst du sowas?
    Gruß - Nico

    1. Vielen Dank!
      Lesen und Schreiben einer Datei war nicht das Problem aber ich muss mir unbedingt reguläre Ausdürcke mal zu Gemüte führen...

      1. Lieber Heinz,

        aber ich muss mir unbedingt reguläre Ausdürcke mal zu Gemüte führen...

        das ist eine gute Idee. Für Dein Problem hätte ein simples str_replace aber durchaus gereicht.

        $zeile = str_replace('||1||', '<h1>Test</h1>', $datei1[$i]);

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Hallo,

          aber ich muss mir unbedingt reguläre Ausdürcke mal zu Gemüte führen...
          das ist eine gute Idee.

          nicht unbedingt.

          Für Dein Problem hätte ein simples str_replace aber durchaus gereicht.

          Eben.

          Freundliche Grüße

          Vinzenz

          1. Lieber Vinzenz,

            aber ich muss mir unbedingt reguläre Ausdürcke mal zu Gemüte führen...
            das ist eine gute Idee.

            nicht unbedingt.

            reguläre Ausdrücke anwenden zu können, ist die Voraussetzung, dies auch auf sinnvolle Art und Weise zu tun. Generell ist es hilfreich und gut, sich mit diesen Dingern einigermaßen auszukennen, und es ist der erste Schritt, sie dann auch in sinnvollen Momenten gekonnt zu benutzen - eine Meisterschaft, die ein Anfänger sicher nicht beherrscht, sondern stattdessen gerne und öfters in die von Dir gepostete Falle tappt.

            Für Dein Problem hätte ein simples str_replace aber durchaus gereicht.

            Eben.

            Diese RegExe nicht benutzen zu können ist aber auch nicht viel besser, wenn man ohne sie vor fast unlösbaren Aufgaben steht. Der sinnvolle Einsatz will ebenso durch Erfahrung gelernt werden, wie der Einsatz an sich.

            Bist Du anderer Meinung?

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Hallo Felix,

              aber ich muss mir unbedingt reguläre Ausdürcke mal zu Gemüte führen...
              das ist eine gute Idee.

              nicht unbedingt.

              reguläre Ausdrücke anwenden zu können, ist die Voraussetzung, dies auch auf sinnvolle Art und Weise zu tun.

              Richtig. Mir scheint der Zeitpunkt dafür noch nicht gekommen.

              Diese RegExe nicht benutzen zu können ist aber auch nicht viel besser, wenn man ohne sie vor fast unlösbaren Aufgaben steht. Der sinnvolle Einsatz will ebenso durch Erfahrung gelernt werden, wie der Einsatz an sich.

              Bist Du anderer Meinung?

              Für den Sextaner ist es in der Regel keine gute Idee, sich mit höherer Mathematik befassen zu wollen. Er muss sich noch ein paar Jährchen solide Grundlagen aneignen. Mich dünkt, dass es dem OP genau an diesen Grundlagen der Programmiertechnik noch fehlt.

              Freundliche Grüße

              Vinzenz

    2. echo $begrüßung;

      Meinst du sowas?

      Besonders gut ist das aber nicht. Es fehlt komplett die Fehlerbehandlung und deutlich kürzer und dabei effektiver geht es auch. Die Fehlerbehandlung muss ja nicht sonstwieweit aufgebläht werden, aber wenigstens andeuten hättest du sie können. Die RegExp-Maschinerie anzuwerfen ist für simples Suchen und Ersetzen nicht notwendig. file() liest eine Datei zeilenweise in ein Array ein. Du musst dann dieses Array in Einzelschritten durchlaufen. Das ist nicht notwendig, es gibt file_get_contents(), das den Inhalt in _einen_ String einliest. Darauf ein str_replace() oder strtr(), anschließend ein file_put_contents() und fertig ist die Laube. Zuzüglich rudimentärer Fehlerbehandlung kann man es sogar als Zweizeiler schreiben.

      if ($content = file_get_contents($fileName))  
        file_put_contents($fileName, str_replace($searchFor, $replaceWith, $content));
      

      Möglichst wenig Code zu schreiben sollte nicht das Hauptziel sein. Doch weniger Code bedeutet auch weniger Komplexität und weniger potentielle Fehlerquellen.

      echo "$verabschiedung $name";

      1. Ciao!

        if ($content = file_get_contents($fileName))

        file_put_contents($fileName, str_replace($searchFor, $replaceWith, $content));

          
        Stimmt, das ist eleganter!  
        Die Arbeit der Verfeinerung wird dann ja Heinz übernehmen. :-) War eh ungetesteter Code von mir.  
          
        Écrasez l'Infâme - Nico
        
  4. Hallo!

    Also, ich habe folgendes Problem: ...

    Hallo,

    grundsätzlich ist das möglich. Beschäftige Dich mit preg_replace sowie fopen. Dort werden Sie geholfen.

    MfG
    crossi