Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Leerzeilen in Gästebuch verhindern

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Leerzeilen in Gästebuch verhindern

    Hallo,

    in meinem (Anfänger-)Gästebuch ist es möglich beliebig viele leere Absätze zu machen. Sehr lästig, da es immer wieder Leute gibt, die sich daraus einen Spaß machen könnten ... :S

    Wie kann ich zu viele Leerzeilen - und auch leere Beiträge (bestehend nur aus Absätzen) verhindern ?



    greetz
    Czily


  • #2
    Wie werden denn bei dir die Absätze eingegeben? Bzw was ist der Unterschied zwischen Leerzeilen und leeren Absätzen?
    Gruss
    L

    Kommentar


    • #3
      Ok, ich habs mir mal angeschaut. Die überflüssigen Leerzeilen kannst du z.B. eliminieren, indem du statt nl2br()
      PHP-Code:
      $text preg_replace('/(\r\n)+/''<br />'$_POST['form_text']); 
      verwendest.
      Gruss
      L

      Kommentar


      • #4
        Vielleicht [\r\n]+ statt (\r\n)+

        Kommentar


        • #5
          [\r\n] macht wohl nicht so viel sinn. Dann würde jedes r,n und \ durch ein <br /> ersetzt werden.

          Kommentar


          • #6
            PHP-Code:
            <?php
            $_POST
            ['form_text'] = 'test
            test


            test'
            ;
            $text preg_replace('/[\r\n]+/''<br />'$_POST['form_text']); 
            echo 
            PHP_VERSION"\n";
            echo 
            PHP_SAPI"\n";
            echo 
            $text;
            ?>
            5.2.5
            cli
            test<br />test<br />test

            Kommentar


            • #7
              Ich würde eher

              (\n|\r|\r\n)+

              oder

              (\r?\n|\r)+

              benutzen.
              Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

              Kommentar


              • #8
                Und was ist der Vorteil davon? Aus meiner Sicht dagegen spricht das unnötige Capture.

                Kommentar


                • #9
                  Quark, du hast ja recht.
                  Das kommt davon, wenn man sich den Post nicht genau ansieht...
                  Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                  Kommentar


                  • #10
                    Danke, das hab ich gesucht!
                    Es funktioniert und ich hab mir die Funktionsweise von preg_replace näher angeschaut - kapier's also auch.

                    Was bedeutet das "+" nach "[\r\n]"? Dass mehrere Zeilenumbrüche gesucht werden sollen, oder?

                    Kommentar


                    • #11
                      "ein oder mehr aufeinanderfolgende"

                      Kommentar


                      • #12
                        Und wenn ich nur "mehr aufeinanderfolgende" auswählen will?
                        "++" wäre mir logisch erschienen, funktioniert aber bei diesem Beispiel nicht...

                        Mein Ziel ist maximal zweifache Zeilenumbrüche zuzulassen. Die Umbrüche am Anfang und Ende des Post trimme ich weg. Der Besucher hat dann die Möglichkeit des einfachen Zeilenumbruchs.->
                        Und eines Absatzes->

                        Ihr versteht? Das ist, finde ich, am übersichtlichsten.

                        Kommentar


                        • #13
                          + bedeutet das gleiche wie {1,}, also dass das vorangegangene Muster einmal bis beliebig oft im Suchtext enthalten sein muss.
                          Wenn du 2 bis beliebig viele haben willst, musst du statt + {2,} schreiben.
                          Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                          Kommentar


                          • #14
                            Das würde bei mir dann so aussehen:

                            PHP-Code:
                            $text preg_replace('/[\r\n]{2,}/''<br />'$text); 
                            Da ändert sich aber nichts. Es wird das gleiche ausgegeben wie mit + oder {1,}
                            --> Wo ist der Fehler?


                            ----
                            noch was:
                            Ich will beim verhindern, dass jemand leere Einträge macht, indem er nur Enter drückt.

                            Ich hätte mir folgendes gedacht, bei der Pflichtfeldkontrolle vorm Senden an die DB:

                            PHP-Code:
                                if ($_REQUEST["form_text"] == "/[\r\n]+/" )
                                    {
                                        
                            $error_msg    .=    "Keinen Eintrag ohne <b>Text</b> bitte!<br />";
                                    } 
                            Funktioniert aber so nicht. Ist aber auch nur reine Spekulation von mir. Ich finde im Netzt einfach nichts zu diesem Thema... was mich eigentlich wundert.

                            Kommentar


                            • #15
                              Zitat von Czily Beitrag anzeigen
                              Das würde bei mir dann so aussehen:

                              PHP-Code:
                              $text preg_replace('/[\r\n]{2,}/''<br />'$text); 
                              Da ändert sich aber nichts. Es wird das gleiche ausgegeben wie mit + oder {1,}
                              --> Wo ist der Fehler?
                              Hier kommt der frühere Kommentar zum Tragen, der [\r\n] und (\r\n) gegenüberstellt.
                              Für beispielhaft 2 Zeilenumbrüche
                              > funktioniert [\r\n]+, weil 4 Zeichen aus der Menge {\r oder \n} ersetzt werden
                              > funktioniert (\r\n)+, weil 2 Strings "\r\n" ersetzt werden

                              Also benutze:
                              PHP-Code:
                               $text preg_replace('/(\r\n){2,}/''<br />'$text); 
                              oder
                              PHP-Code:
                               $text preg_replace('/(\r\n|\n|\r){2,}/''<br />'$text); 
                              wenn Du Dateien mit verschiedenen Umbrucharten erwartest.

                              Übrigens wird damit genau 1 Leerzeile erlaubt - eine Umbruch-Kombination geht für den Absatz drauf.

                              Besser wäre übrigens noch \040 und \t (Leerzeichen und Tab) einzubauen sonst knackt jemand Dein System mir Space-Enter-Space-Enter-Space-Enter...

                              Zitat von Czily Beitrag anzeigen

                              ----
                              noch was:
                              Ich will beim verhindern, dass jemand leere Einträge macht, indem er nur Enter drückt.

                              Ich hätte mir folgendes gedacht, bei der Pflichtfeldkontrolle vorm Senden an die DB:

                              PHP-Code:
                                  if ($_REQUEST["form_text"] == "/[\r\n]+/" )
                                      {
                                          
                              $error_msg    .=    "Keinen Eintrag ohne <b>Text</b> bitte!<br />";
                                      } 
                              Funktioniert aber so nicht. Ist aber auch nur reine Spekulation von mir. Ich finde im Netzt einfach nichts zu diesem Thema... was mich eigentlich wundert.
                              Ich denke Du trimmst ohnehin?
                              PHP-Code:
                              $entry trim ($_POST["form_text"]);
                              if (empty (
                              $entry)) {
                                
                              $error_msg .=    "Keinen Eintrag ohne <b>Text</b> bitte!<br />";
                                } 
                              Hinweis: Benutze besser $_POST statt $_REQUEST.
                              Hinweis: Hör auf zu spekulieren und lies das Manual. if ($_REQUEST["form_text"] == "/[\r\n]+/" ) liegt jenseits jeder Logik. Jedenfalls in php und für diesen Anwendungsfall.

                              Ich finde im Netzt einfach nichts zu diesem Thema... was mich eigentlich wundert.
                              Da bist Du nicht alleine...
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X