Daniel (nun registriert): Problem mit preg_replace

Hallo,
habe folgenden Code:

<?php  
$file="file.php";  
  
$handle = fopen ($file, "r");  
$log = fread ($handle, filesize ($file));  
fclose($handle);  
  
$log=preg_replace("/^[<?php](.*)[?>]$/", "$1", $log);  
  
echo $log;  
?>

die file.php

<?php  
  
old  
  
?>

Es sollen die anfangs und endtags für php aus der file.php entfernt werden.
Was mache ich falsch?

  1. Nachtrag:
    $log=preg_replace("/^<\?php(.*)\?>$/", "$1",$log);
    das funktioniert allerdings nur für einzeiler ):
    wie erreiche ich, dass es auch über mehrere zeilen hinweig funktioniert?

    1. Huhu Daniel,

      wie erreiche ich, dass es auch über mehrere zeilen hinweig funktioniert?

      schau Dir die Dokumentation zum Thema "modifier" an.

      http://php.net/manual/de/reference.pcre.pattern.modifiers.php

      Je nachdem was Du vorhast kann u.U. der Einsatz des PHP-Tokenizer sinnvoller sein.
      http://php.net/tokenizer

      Viele Grüße

      lulu

      --
      bythewaythewebsuxgoofflineandenjoytheday
      1. schau Dir die Dokumentation zum Thema "modifier" an.

        http://php.net/manual/de/reference.pcre.pattern.modifiers.php

        Danke, hab mir das jetzt mal n bisle angeschaut und mit /m funktioniert das ganze wie es soll :-)

        Je nachdem was Du vorhast kann u.U. der Einsatz des PHP-Tokenizer sinnvoller sein.
        http://php.net/tokenizer

        Alles was ich will, ist die anfangs- und endtags zu entfernen, anschließend kommt neuer inhalt dazu und die tags kommen ebenfalls wieder dazu. bei der datei handelt es sich um eine logdatei, da diese aber nicht vom nutzer einsehbar sein soll, kommen einfach noch php tags dazu und die entsprechende endung.

        1. Hmm, es funktioniert doch nicht ganz wie es soll ):
          $log=preg_replace("/^<?php(.*)?>$/m", "$1",$log);
          Was ist an diesem Ausdruck falsch?
          Das sollte doch alles außer die php tags zurückgeben?

          1. Hab da was falsch verstanden, /s ist das richtige ;)

        2. hi,

          bei der datei handelt es sich um eine logdatei, da diese aber nicht vom nutzer einsehbar sein soll, kommen einfach noch php tags dazu und die entsprechende endung.

          Wer sich solche "Lösungen" einfallen lässt, hat definitiv einen Sockenschuss.

          Lege die Logdatei an einem Ort ab, an dem sie nicht über HTTP abrufbar ist - bspw. oderhalb des DocRoot, oder in einem vor HTTP-Zugriff geschützten Verzeichnis.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }