Kleines Problem mit preg_replace...

B

BartTheDevil89

Guest
Hallo,

ich habe ein Problem, bzw. ein Aufgabenfeld. Ich habe einen Content und möchte daraus alle <script>-Codes filtern, die im src einen speziellen Begriff mit drin haben. Also als Beispiel:

$content = "Das ist der Testcode mit diesem Script <script type="text/javascript" src="http://www.begriff.de/script.php?s=56863"></script> hier";

Kann allerdings auch so aussehen:

$content = "ein anderes Beispiel bin ich mit <script type="text/javascript" src="http://www.domain.de/begriff2.php"></script>

Ziel ist es jetzt anhand einer Blacklist auf spezielle Begriffe eben zu überprüfen und diese dann aus diesem Code rauszufiltern. Also die beispielhafte Blacklist:

begriff
begriff2
begriff3

Mein aktueller Code ist dieser:

PHP:
$handle = fopen("badwerbung.txt", "r");   
while(!feof($handle))   
{   
    $bad_word = fgets($handle, 4096);   
    if($bad_word != "") {
        // Zeilenumbruch entfernen 
        $bad_word = str_replace(array("\r\n", "\n"), array('',''), $bad_word); 
        $pattern = '/<script.+?src=["|\'].+?'.$bad_word.'.+?["|\']?>(.+?)?<\/script>/';  
        $content = preg_replace($pattern, "$1", $content);  
    }  
}   
fclose($handle);

Das auslesen der Begriffe läuft richtig, allerdings muss irgendwie zwischen if($bad_wort != ""){.... und dem } der Fehler sein, weil der Filter einfach nicht richtig läuft.

Woran liegt, kann mir jemand helfen?

Dankeschön
 
CODE preg_replace('/<script[^>]*src=[\"\']?[^\s\"\']*'.$bad_word.'[^\s\"\']*[\"\']?[^>]*>[^<]*<\/script>/','',$content);


Damit sollte es funktionieren.
 
Lass dir mal dein Pattern vor dem Ersetzen ausgeben.

Dann dürfte klar werden, warum das nichts findet.
 
Zurück
Oben