Mehrere Zeilenumbrüche durch einen Zeilenumbruch ersetzen

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

  • Mehrere Zeilenumbrüche durch einen Zeilenumbruch ersetzen

    Hallo zusammen,

    ich würde gerne den Quellcode meiner Unterseiten automatisch von unnötigen Zeilenumbrüchen säubern. Dazu lade ich mir die Seite mit der Funktion file_get_contents() und lasse dann verschiedene Replace-Funktionen drüber laufen. - Es sollen nicht nur unnötige Zeilenumbrüche, sondern auch andere Dinge ersetzt werden. - Das klappt soweit auch alles, bis auf die Zeilenumbrüche. Da es sein kann, dass beispielsweise 6 Zeilenumbrüche hintereinander stehen und in einem anderen Teil der Seite nur 4, habe mich folgender Funktion bedient:
    PHP-Code:
    $code preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s'"\n\n"$code); 
    Damit versuche ich mehrere Zeilenumbrüche durch einen einzigen Zeilenumbruch zu ersetzen. Irgendwie funktioniert das aber nur bedingt. Teilweise klappt es, teilweise nicht.

    Kann mir jemand helfen?
    Das Genie überblickt das Chaos!

    Wer Rechtschreibfehler findet, darf sie behalten!

  • #2
    Quantifier {2} bedeutet: GENAU 2 Vorkommen. Du willst aber alles ab zwei und mehr.

    Mir ist auch nicht ganz klar, warum du 2 Zeilenumbrüche angibst. Du willst ja nicht nur die geraden Vorkommen abdecken, sondern auch die ungeraden.
    Zuletzt geändert von TobiaZ; 21.09.2011, 15:18.

    Kommentar


    • #3
      Hmm, da hast du wohl Recht... Sah auch ursprünglich etwas anders aus. Hab da einiges probiert. Wie kann ich denn den Quantifier so ändern, dass er 2 UND mehr abdeckt? Kann ja nicht alles aufzählen, oder? Geht das mit {2,} ?
      Das Genie überblickt das Chaos!

      Wer Rechtschreibfehler findet, darf sie behalten!

      Kommentar


      • #4
        PHP-Code:
        "/(?:[ \t]*(?:\n|\r\n?)){2,}/" 
        Gruß,

        Amica
        Zuletzt geändert von AmicaNoctis; 21.09.2011, 15:47.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Hey Amica, hey TobiaZ

          vielen Dank für eure Antworten. Habe das jetzt wie folgt verwendet, aber irgendwie hat das nicht zum gewünschten Effekt geführt.

          PHP-Code:
          $code preg_replace('/(?:[ \t]*(?:\n|\r\n?)){2,}/'"\n"$code); 
          Kann mir jemand noch einen Tipp geben, was ich hier jetzt noch für einen Fehler drin habe?

          Im Endeffekt soll der Quellcode einer Seite dargestellt werden. HTML-Tags etc. sollen alle rausgefiltert werden (klappt soweit auch) und anschließend soll eben der reine Text ausgegeben werden. Allerdings werden aktuell zum Teil 10 und mehr Zeilenumbrüche nacheinander ausgegeben. Ziel soll jedoch sein, höchstens einen einzigen Zeilenumbruch zwischen zwei Absätzen zu haben.

          Hat jemand einen Tipp für mich, wieso das mit oben angegebenem Code nicht funktioniert?
          Das Genie überblickt das Chaos!

          Wer Rechtschreibfehler findet, darf sie behalten!

          Kommentar


          • #6
            Funktioniert prima:
            PHP-Code:
            <?php
                
            // Die Umbrüche sind auch noch mit Leerzeichen und Tabs dazwischen.
                
            $code = <<<'EOD'
                    kdfaksdjfaödkjf kj ölkdjfaösdjfa

                        adf
                                  
                                     
                                         
                                         
                foo
            EOD;
                
            $code preg_replace('/(?:[ \t]*(?:\n|\r\n?)){2,}/'"\n"$code);
                echo 
            $code;
            ?>
            Edit: Wenn du zufällig meinst, dass du eine leere Zeile zwischen zwei Absätzen haben willst, musst du mit "\n\n" ersetzen, denn eine leere Zeile sind zwei Zeilenumbrüche. Präzise Formulierungen führen schneller zu einer präzisen Lösung.
            Zuletzt geändert von AmicaNoctis; 01.10.2011, 14:00.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              closed

              Hey Amica,

              okay, du hattest Recht. Sorry.
              Ich hatte zuvor ein strip_tags eingebaut, das dann einiges rausgefiltert hat und dadurch das Ergebnis verfälschte.

              Funktioniert wunderbar.

              Vielen Dank nochmal!
              Das Genie überblickt das Chaos!

              Wer Rechtschreibfehler findet, darf sie behalten!

              Kommentar

              Lädt...
              X