PHP-Script in String Parsen
PeterK
- php
Hallo!
Ich möchte gerne etwas in der Atr realisieren, dass ein PHPScript ausgeführt wird und das resultat in einen String geschrieben wird. Ich könnte natürlich
ob_start();
include "xyz.php"
$sResume = ob_get_contents();
ob_end_clean();
echo machwas($sResume);
nehmen, aber was ist, wenn xyz.pxp auch OutputBuffering-Funktionen benutzt und z.B. auf die selbe Weise wieder eine andere Datei einbindet?? Dann gehts nichtmehr! Gibt es eine Möglichkeit einen Datei inklusive aller enthalten Includes in einen String abarbeiten zu lassen? Man könnte zum Beispiel das Script als extra Anwendung starten. Geht sowas? Und wie siehts dann mit SafeMode-Beschränkungen und der Performance aus?
Thx, Peter
Halihallo PeterK
Ich möchte gerne etwas in der Atr realisieren, dass ein PHPScript ausgeführt wird und das resultat in einen String geschrieben wird. Ich könnte natürlich
Warum willst du das? - Wenn du selbst für deine Codes verantwortlich bist: Behelfe
dir einer besseren Lösung! - Eine derartige "Lösung" wie du sie hier vorschlägst ist
höchstens ein sehr übler Workaround.
nehmen, aber was ist, wenn xyz.pxp auch OutputBuffering-Funktionen benutzt und z.B. auf die selbe Weise wieder eine andere Datei einbindet?? Dann gehts nichtmehr! Gibt es eine Möglichkeit einen Datei inklusive aller enthalten Includes in einen String abarbeiten zu lassen? Man könnte zum Beispiel das Script als extra Anwendung starten. Geht sowas? Und wie siehts dann mit SafeMode-Beschränkungen und der Performance aus?
Ja. Informiere dich über http://www.php.net/manual/de/function.popen.php,
damit kannst du die Ausgabe (die _ganze_) des Scriptes einlesen und bei dir in den
gewünschten String einlesen und ggf. bearbeiten. Aber eben: Wenn's anders geht, geh
anders.
Viele Grüsse
Philipp
Die Idee war, formatierten Quelltext auszugeben. Dh. z.b. Script A:
<html>
<head>
<style type="text/css"><!--
<? IncludeEx("default.css", 6); ?>
-->
</head>
. . .
default.css:
p
{
color:red;
}
Ergebnis:
<html>
<head>
<style type="text/css"><!--
p
{
color:red;
}
-->
</head>
. . .
IncludeEx:
function IncludeEx($page, $depth) {
$sFirst=ob_get_contents();
ob_end_clean();
echo $sFirst;
ob_start();
include $page;
$sSecond=ob_get_contents();
ob_end_clean();
$sSecond = moveright($sSecond, $depth);
echo $sSecond;
ob_start();
}
Nur ... wenn $page nochmal eine Seite mit IncludeEx einbindet, kommt der OutputBuffer durcheinander, da der eine solche Rekursive verschachtelung nicht kennt...
Thx, Peter