Problem mit preg_replace
Daniel (nun registriert)
- php
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?
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?
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
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.
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?
Hab da was falsch verstanden, /s ist das richtige ;)
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