Hallo,
ohne wenigstens einen kleinen Code-Schnipsel ist es natürlich etwas schwierig, hört sich aber so an, also ob Du Dich eventuell mit den Anführungszeichen vertan hast, also " und ' verwechselt hast oder aber womöglich bei der Ausgabe ein " zum Öffnen verwendet und dann nicht mehr geschlossen hast. Das kann dann zur Ausgabe von dahinterstehendem PHP-Code führen, bis das nächste Anführungszeichen kommt und die Ausgabe beendet wird.
Ich hoffe, das hilft Dir weiter.
Leider nicht wirklich.
Ja ich verwende überwiegend " um Strings, Dateinamen und dergleichen zu kennzeichnen, aber es sind alle geöffneten " auch wieder geschlossen. Ein Beleg hierfür ist schon darin zu sehen, dass das PHP-Skript komplett richtig ausgeführt wird.
Ok mit Ausnahme, dass halt irgendwelche zusätzlichen Ausgaben erfolgen.
Das Prozedere sieht so aus:
-- Haupt-PHP-Datei, in der eine Variable $Content = "" deklariert ist
-- $Content wird mit Inhalt gefüllt, z. B. dadurch dass eine txt Datei geladen und deren Inhalt übergeben wird
-- am Ende des Skripts wird über print $Content ausgegeben
Es ist so unerklärbar warum dieser Fehler auftritt, da
-- er auch nicht auf jeder Seite auftritt (hauptsächlich, wenn ich Inhalt anderer Dateien nach obigem Schema einfüge)
-- der String, der fehlerhaft hinzugefügt wird, ist so zufällig. Einmal wird PHP-Code ausgegeben, dann wieder PHP-Kommentar etc.
Das gleiche Problem tritt z. B. auch bei folgender Situation auf. Ich hab mir zum Einfügen von Textdateien eine kleine Klasse geschrieben, die die Datei lädt und ein paar Ersetzungen vornimmt und letztlich den Inhalt dann zurückgibt, das sieht so aus:
class IncLayoutComponents {
var $Content = "";
function IncLayoutComponents($strFileName){
// load the file
$Handle = fopen($strFileName, "r");
if ($Handle !== false){
$this->Content = fread($Handle, filesize($strFileName));
fclose($Handle);
}
}
function Replace($strPlaceholder, $strReplacement){
$this->Content = str_replace("{".$strPlaceholder."}", $strReplacement, $this->Content);
}
function Remove($strMarker, $boolRemove){
// remove only the markers
if ($boolRemove == false){
$this->Replace($strMarker.":", "");
$this->Replace(":".$strMarker, "");
}
// remove the markers and their content
else{
// replace all occurances of the marker inclusion
while (strpos($this->Content, $strMarker.":") !== false){
if (strpos($this->Content, $strMarker.":") !== false){
$StartPos = strpos($this->Content, $strMarker.":");
if (strpos($this->Content, ":".$strMarker) !== false){
$EndPos = strpos($this->Content, ":".$strMarker) + strlen($strMarker) + 3;
$strTemp = substr($this->Content, 0, $StartPos-1) .
substr($this->Content, $EndPos+1);
$this->Content = $strTemp;
}
}
}
}
}
function Get(){
return $this->Content;
}
}
Aufgerufen wird das Ganze so:
$C = new IncLayoutComponents("relativer_Dateiname");
// hier wird ein Platzhalter in der TXT Datei namens {strFormularFeldName} ersetzt durch den angegebenen Text
$C->Replace("strFormularFeldName", "Inhalt");
// hier wird ein Block von Inhalt aus der TXT entfernt, z. B.
// {strRemove:}
// all das hier wird entfernt ...
//
$C->Remove("boolRemove", true);
print $C->Get();
Also selbst bei diesem sehr überschaubaren PHP-Code wird nach $C->Get() noch zusätzliches Zeugs ausgegeben, was da nicht sein sollte.
Und was ja eben komisch ist, auf meinem lokalen PHP-Server kommt dieser Fehler nicht vor, sondern nur auf dem Produktiv-Server im Netz...
Bin am Verzweifeln....
Grüße,
Michael