Ankündigung

Einklappen
Keine Ankündigung bisher.

regexp - am verzweifeln.....

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • regexp - am verzweifeln.....

    Hallo zusammen,

    könnte mir bitte jemand weiterhelfen....

    ich suche einen regulären Ausdrück für PHP, welcher folgendes bewerkstelligt:

    textfile.txt

    ich bin dummy
    {* Ich bin ein Kommentar 33333 *}
    super dummy.....
    {* Ich bin ein Kommentar 33333 *}
    ende vom file

    hätte folgendes im Einsatz:
    $file=preg_replace("/{\*.+\*}\\n|\\r/","",$file);

    funktioniert auch soweit.... hätte aber gerne, dass die Leerzeichen am Anfang von ......{* Ich bin ein Kommentar..... auch entfernt werden.

    Bitte um Hilfe...

    LG
    Snoopy

  • #2
    hätte aber gerne, dass die Leerzeichen am Anfang von ......{* Ich bin ein Kommentar..... auch entfernt werden.
    Welche Leerzeichen? Du meinst die zwischen {* und "Ich bin ein..." ?
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Hallo,
      ich meine die Leerzeichen vor {* .... wenn welche in dieser Zeile existieren.... und ggf. auch nach *}...
      BG

      Kommentar


      • #4
        Code:
        ich bin dummy 
        {* Ich bin ein Kommentar 33333 *}
        super dummy.....
        {* Ich bin ein Kommentar 33333 *}
        ende vom file
        1. Leerzeichen sieht man hier nicht

        2. Die sprichst du mit deinem RegEx auch nicht (wirklich) an.. Im Grund suchst du damit alles von {* bis *}

        Daher auch meine Fragen oben, irgendwie kann ich dir nicht ganz folgen.

        Mit dem Pattern hier

        Code:
        {\*.+\*}
        findest du das hier - ohne Leerzeichen, weil oben im Input ja auch keine sind.

        Code:
        {* Ich bin ein Kommentar 33333 *}
        {* Ich bin ein Kommentar 33333 *}
        Ev. hast du auch echten Code? Ist immer etwas schwer mit Phantasiecode. Hier kannst du Testen: http://regex101.com/
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          sorry,
          editor hat mir die leerzeichen entfernt

          ich bin dummy
          {* Ich bin ein Kommentar 33333 *}
          super dummy.....
          leerzeichen{* Ich bin ein Kommentar 33333 *}leerzeichen
          ende vom file

          $file=preg_replace("/{\*.+\*}\\n|\\r/","",$file);

          ersetzt mir jetzt {* Ich bin ein Kommentar 33333 *} mit Zeilenumbruch durch NICHTS.....
          wenn jetzt Leerzeichen vor {* Ich bin ein Kommentar 33333 *} in der Zeile sind oder auch nach {* Ich bin ein Kommentar 33333 *}
          würde ich diese auch gerne entfernen....

          BG

          BG

          Kommentar


          • #6
            man kann auch code tags benützen...

            Kommentar


            • #7
              code tags?
              was würde das bringen? bzw. wie soll das aussehen....?
              meinst du statt {* *}...? wenn ja, ich muss diese so verwenden....
              bg

              Kommentar


              • #8
                moma meint, den Quelltext und dergleichen, den du hier postest, in etwa [code][/code]-Tags zu setzen, damit es hübscher aussieht:

                Code:
                ich bin dummy
                {* Ich bin ein Kommentar 33333 *}
                super dummy.....
                   {* Ich bin ein Kommentar 33333 *}<leerzeichen>
                ende vom file
                Erhält immerhin auch die Leerzeichen am Zeilenbeginn.

                Kommentar


                • #9
                  @mermshaus - danke für den Hinweis.

                  Code:
                  ich bin dummy
                  {* Ich bin ein Kommentar 33333 *}
                  super dummy.....
                  
                     {* Ich bin ein Kommentar 33333 *}<leerzeichen>
                  ende vom file
                  hat jemand eine lösung? es sollten nur die {* Ich bin ein Kommentar 33333 *} also Kommentare entfernt werden. Normale Leerzeilen nicht.

                  Besten Dank!

                  Kommentar


                  • #10
                    Vermutlich gehts auch eleganter, ist mir gerade aber nichts eingefallen - nimm die Leezeichen in deinen Ausdruck mit rein:

                    PHP-Code:
                    $str =
                    'ich bin dummy
                    {* Ich bin ein Kommentar 33333 *}
                    super dummy....

                       {* Ich bin ein Kommentar mit Leerzeichen davor und danach *}    
                    ende vom file'
                    ;

                    $pattern '/ *{\*.+\*} *\\r\\n/U';
                    $replaceTo '';
                    $neu preg_replace($pattern$replaceTo$str);

                    var_dump($neu);

                    /*
                    string(49)
                    "ich bin dummy
                    super dummy....

                    ende vom file"
                    */ 
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Ich denke, die Fragestellung ist einfach nicht durchdacht genug. {* ... *} deutet ja auf ein Kommentarformat hin, dass beispielsweise auch mitten in einer Zeile stehen könnte (foo {* ... *} bar), denn sonste würde es den schließenden Tag (*}) ja nicht benötigen. In diesem Fall ergibt es aber im Grunde keinen Sinn, den Whitespace davor und danach zu entfernen, weil du dann foobar hättest, obwohl wohl eher foo bar richtig wäre.

                      Was willst du also wirklich (und exakt) erreichen?

                      Kommentar


                      • #12
                        hi,
                        danke für die anworten. liege leider krank herum.
                        @mermhaus: das mit der fragestellung ist etwas schiefgegangen.
                        ich hätte gerne in zeilen in denen vorher und nachher leerzeichen sind (aber nur leerzeichen) diese ersetzt.
                        wenn text vorher oder nachher steht dann nicht.
                        bg

                        Kommentar


                        • #13
                          Und gute Besserung!

                          PHP-Code:
                          $pattern '/ {2,}{\*.+\*} {2,}\\r\\n/U'
                          So? Hier spontan getippt, also alles ab 2 Leerzeichen ... ??

                          LG
                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            Die Erklärung ist immer noch viel zu wenig eindeutig, sorry.

                            Ich verstehe nicht, was du willst. Vielleicht versuchst du es mal weniger abstrakt und mehr inhaltlich.

                            ich hätte gerne in zeilen in denen vorher und nachher leerzeichen sind (aber nur leerzeichen) diese ersetzt.
                            Sollen diese Kommentare auch noch ersetzt werden oder die jetzt nicht mehr? Ich nehme mal an, sie sollen noch ersetzt werden.

                            Was ist, wenn eine Zeile vor oder (exklusiv) nach einem Kommentar Leerzeichen enthält, ansonsten aber keinen weiteren Inhalt?

                            Was ist, wenn eine Zeile andere Whitespace-Zeichen wie Tabs enthält?

                            Meiner Ansicht nach erklärst du gerade, dass du aus dem hier…

                            Code:
                            ich bin dummy
                            {* Ich bin ein Kommentar 33333 *}
                            super dummy.....
                            ___{* Ich bin ein Kommentar 33333 *}__
                            x
                            {* Ich bin ein Kommentar 33333 *}__
                            y
                            ___{* Ich bin ein Kommentar 33333 *}
                            z
                            ___{* Ich bin ein Kommentar 33333 *}~_
                            ende vom file
                            ___{* Ich bin ein Kommentar 33333 *}__
                            …zum Beispiel das hier…

                            Code:
                            ich bin dummy
                            
                            super dummy.....
                            
                            x
                            __
                            y
                            ___
                            z
                            ___~_
                            ende vom file
                            …machen willst. (Das zweite Beispiel endet mit einem "\n".)
                            "_" steht für Leerzeichen, "~" für Tab.

                            Ich sehe darin keinerlei Sinn, aber das Pattern wäre /(?:^ +\{\*.*?\*\} +$)|(?:\{\*.*?\*\})/m. („Funktioniert“ nur mit \n-Zeilenenden, denn \r wäre dann sozusagen auch ein Nicht-Leerzeichen.)

                            Kommentar

                            Lädt...
                            X