Regex Problem...

  • Themenstarter Themenstarter ByeBye 31659
  • Beginndatum Beginndatum
B

ByeBye 31659

Hallo,

ich hab ein Problem einen Regulären Ausdruck in PHP zu erstellen.
Ich möchte alle JavaScripts aus meinem String herausschmeißen.

Ich dachte mir, das ich einfach einen Regex zusammen bau der wie folgt aussieht:

<script (hier folgt eine beliebige Zeichenfolge) </script>

Ich hab es so versucht:

$vernichtejavascript = "/(<script) (.*) (<\/script>)/";

Leider bekomme ich es nicht hin, ich schaffe es nur, das entweder <script oder </script> gelöscht werden, aber nicht beides bzw beides und der Inhalt dazwischen...

Löschen möchte cih dann anhand folgenden Codes:

$string = preg_replace($vernichtejavascript,"",$string);

Kann mir da jemand weiterhelfen?
 
Hi,
ich würde sagen, dass Problem ist das Leerzeichen vor (<\/script>), denn meistens ist davor kein Leerzeichen, sondern ein Newline.
Du kannst es ja mal so testen:
PHP:
<?php
    $vernichtejavascript = '/(<script .*?<\/script>/';
?>

Gruß
Marvin
 
Ich nehme mal an, zwischen diesen <script>-Tags befinden sich auch Zeilenumbrüche.
Der Punkt findet alle Zeichen.... standardmässig jedoch keine Zeilenumbrüche, wodurch dein Ausdruck nicht zutrifft.

Wenn der Punkt auch auf Zeilenumbrüche zutreffen soll, musst du die Flag s notieren:
Code:
$vernichtejavascript = "@<script .*</script>@Usi";
 
Hallo,

ich habe nun folgendes benutzt, was auch gut funktioniert:

"/<script .*?<\/script>/s"

Aber nun möchte ich auch alle Kommentare entfernen, mein Problem dabei ist, es soll der komplette Kommentar entfernt werden, auch wenn darin ein html Tag steht...

Mein Ansatz, der leider nicht funktioniert:

"/<!\-\- [^>]+ \-\->/s"

Bei folgendem Html Code:

wurst <!-- arg > arg2 --> wurst2

Kommt als Ergebnis heraus:

wurst arg2 --> wurst2

Man sieht, das er den Kommentar zu früh abschließt...

Hat da jemand Rat?
 
Hi,

wofür steht SGML?

Also dein Ausdruck haut mir leider alles vom ersten bis zum letzten Kommentar weg egal was dazwischen steht, also leider nicht nur die Kommentare :-( Vielleicht noch eine andere Idee?
 
Super es klappt :-)

Aber hab da ein neues Problem :-(

Wenn ich nun ein Leerzeichen, dass durch &nbsp; dargestellt wird durch ein anderes Leerzeichen " " (ohne Anführungszeichen) austauschen möchte, so macht er das leider nicht :-(

Hat jemand Rat was am folgendem Code falsch ist?

$spacewandler = "/&nbsp;/";
$string = preg_replace($spacewandler, "aaaaaaaaaaaaaaaaaaaaaaaarg", $string);

Ich finde da keinen Fehler....
 
Zurück