regexp kommentare entfernen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • regexp kommentare entfernen

    Hallo,
    ich möchte per preg_replace alle Kommentare aus einem übergebenen CSS-Code entfernen. Dafür verwende ich folgenden Pattern:
    PHP Code:
    /(\/\*[^(\*\/)]*\*\/)/ 
    Das Problem ist, das PHP die Kommentare nicht erkennt, wenn sich ein Stern (*) im Kommentar befindet (z.B. "/* *blabla* */"), das liegt vermutlich an
    PHP Code:
    [^(\*\/)]* 
    ,
    damit möchte ich definieren, dass Innerhalb eines Kommentars kein "*/", also das Ende eines Kommentars auftreten darf (weil PHP sonst das erste und das letze Kommentar aus dem Stylesheet als Begrenzung nimmt, alles andere dazwischen, einschließlich "*/", als Kommentarinhalt interpretiert).
    Ich weiß auch nicht sicher, wie ich eine bestimmte Zeichenkette ausschließe, "*/" in Klammern zu schreiben war nur ein Versuch. Warscheinlich werden "*" und "/" doch als einzelne Zeichen interpretiert...
    Kann mir jemand helfen?
    Gruß
    jofree

  • #2
    Schon mal den Modifier U probiert?

    Comment


    • #3
      ja...

      PHP Code:
      /(\/\*[^(\*\/)]*\*\/)/
      habe ich probiert, da verändert sich nichts.

      Comment


      • #4
        doch... es funktioniert... hatte vergessen das "[^(\*\/)]* wegzumachen...
        PHP Code:
        /(\/\*.*\*\/)/
        danke für die hilfe!
        jofree

        Comment


        • #5
          Originally posted by jofree View Post
          doch... es funktioniert... hatte vergessen das "[^(\*\/)]* wegzumachen...
          PHP Code:
          /(\/\*.*\*\/)/
          danke für die hilfe!
          jofree
          Code:
          $output = preg_replace("/(/*.**/)/U","",$output);
          [COLOR=Red][COLOR=Black]Wenn man dieses Pattern in ein preg_replace einsetzt, erscheint folgende Fehlermeldung:

          [/COLOR]Warning: preg_replace() [function.preg-replace]: Unknown modifier '*' in x.php on line Y

          [COLOR=black]PHP 5.3[/COLOR]

          [COLOR=DarkOliveGreen]---------
          Hier habe ich eine perfekte Lösung gefunden:
          http://www.webdesign-informatik.de/p...hen-php-regex/[/COLOR]

          [/COLOR]
          Last edited by scripthostingnet; 08-07-2010, 14:04. Reason: Ergänzung

          Comment


          • #6
            Originally posted by scripthostingnet View Post
            Wenn man dieses Pattern in ein preg_replace einsetzt, erscheint folgende Fehlermeldung:
            Da stehen noch Backslashes drin, die die PHP-Tags des Forums leider verschlucken:
            Code:
            /(\/\*.*\*\/)/U
            Siehst du aber, wenn du den Originalbeitrag zitierst.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Comment


            • #7
              Ich benutze diese RegEx um Kommentare zu entfernen:

              PHP Code:
              $css=preg_replace('~\/\*[^*]*\*+([^/*][^*]*\*+)*\/~m','',$css); # CSS-Kommentare entfernen 
              ACHTUNG: RamonaS zeigte ein beschämendes Verhalten in der Vergangenheit

              Comment

              Working...
              X