Hallo Homer.
Der PHP Code wird aber nicht ausgeführt, weis jemand warum nicht?
Wird der Quellcode deines PHP-Scriptes ausgegeben? Wenn nicht, dann wurde das Script interpretiert, dein Interpreter funktioniert dann also.
Schauen wir uns also schrittweise einmal dein Script an:
// Wenn eine Seite über die Suchfunktion aufgerufen wird
if(isset($_GET['rslt'])) {
ob_start();
$kw = htmlentities($_GET['kw'],ENT_QUOTES);
$datei = $_GET['rslt'];
Ist der Wert von $\_GET['rslt'] wirklich eine existente und lesbare Datei?
> ~~~php
// Inhalt der Datei wird eingelesen und das Suchwort markiert
> $HandleDatei = fopen ($datei, "r");
Du legst hiermit ein Dateihandle an, ohne zu überprüfen, ob die Datei überhaupt erfolgreich gelesen werden konnte. Überprüfe also den Rückgabewert der fopen-Funktion auf FALSE.
~~~php
[...]
$ersetzungen = '<span class="error">\1</span>'; // 1 Backreferenz auf das gefundene Keyword
Merkwürdige Klassifizierung eines Schlüsselwortes ...
> ~~~php
$ChgDatei = preg_replace($suchmuster, $ersetzungen, $CntDatei);
> echo $ChgDatei; // !!! PHP Code aus den Zeilen wird nicht ausgeführt
Sicher? Ich schätze viel eher, dass ein Leerstring infolge von oben genanntem FALSE ausgegeben wird. Nutze für solcherlei Kontrollausgaben besser print_r oder var_dump.
> [code lang=php]$DateiEcho = ob_get_contents();
> ob_end_clean();
> echo $DateiEcho;
Die letzten drei Schritte kannst du zu ob_flush zusammenfassen.
Einen schönen Mittwoch noch.
Gruß, Mathias
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules