2017-09-08 1 views
-1

Ich habe ein HTML-Dokument, wo ich Block entfernen möchte (beginnend mit Datum 20170908 endet mit dem nächsten Skript-Tag), aber preg_replace kann nichts erkennen, was unter dem Newline liegt. Wenn ich Zeilenumbrüche manuell lösche, funktioniert der reg-Ausdruck zwar, aber ich möchte sie programmgesteuert kürzen. Ein Teil des HTML-Dokuments:preg_replace kann nicht mit neuer Zeile umgehen

<script type="text/javascript" src="iam.js"></script><script 
     type="text/javascript"src="/search.js"></script><script 
     type="text/javascript" > /* 20170908 */ function uabpd4(){ 
     //some function 
    } 
    </script> 

In PHP ich folgendes tun:

$content = trim(preg_replace('/\s+/', ' ', $content)); // just trying to get rid of newlines, but nothing from this works 
    $content = preg_replace("/\r|\n/is", "", $content); 
    $content = str_replace(array("\n", "\t", "\r"), '', $content); 
    $content = preg_replace("/\/\* $date(.*?)(((?!script>).)uabpd4(.*?script>))/is", "WORKS </script>", $content); 

Danke.

+0

funktioniert https://regex101.com/r/E1yHVY/2 – RomanPerekhrest

+0

Was Sie versuchen zu tun? – Andreas

+0

Ja, weil Sie die Newline selbst entfernt haben. – user3099909

Antwort

0

Wenn ich Sie richtig verstehe, möchten Sie den Javascript-Teil mit dem Datum darin entfernen.

Dies ist eine Methode, passen Sie den Teil an, den Sie entfernen möchten, und verwenden Sie str_replace, um ihn zu entfernen.

$re = '/.*script type.*<script.*type.*?>(.*?uabpd4.*})/s'; 
$str = '<script type="text/javascript" src="iam.js"></script><script 
     type="text/javascript"src="/search.js"></script><script 
     type="text/javascript" > /* 20170908 */ function uabpd4(){ 
     //some function 
    } 
    </script>'; 

preg_match($re, $str, $m); 

echo str_replace($m[1], "", $str); 

https://3v4l.org/ktcXo

+0

Mein Problem ist nicht mein regulärer Ausdruck, es funktioniert, aber die Tatsache, dass es nicht funktioniert, wenn es neue Zeilen gibt. Das Problem ist immer noch da. – user3099909

+0

Dies funktioniert auch mit neuen Zeilen. Ich verstehe das Problem nicht ... https://3v4l.org/VhEKe – Andreas