Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Problem bei max zeichenlänge überprüfen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Problem bei max zeichenlänge überprüfen

    Hi!

    Ich will in einen Text prüfen, ob da ein Wort mit mehr als x zeichen exestiert. Das aheb ich auch soweit
    PHP-Code:
            $teile explode(" "$text);
            foreach(
    $teile as $nummer => $teil)
            {
              
    $laenge strlen ($teile[$zahler]);
              if (
    $laenge>50)
              {
                
    //.....
              
    }
            } 
    Nur berücksichtigt das nich wenn ein "Enter" dazwischen ist. Was kann man da tun?
    Ich habe es es so versucht:
    PHP-Code:
    $text ereg_replace '\n'' \n'$text ); 
    Einfach vor dem Zeileinbruch noch ein ' ' einfügen. Aber da hat er dann einfach alle n weggelassen.

    thx

  • #2
    Hi,
    bevor dir keiner mehr antwortet gebe ich dir eine simple aber vermutlich nicht die einfachste Lösung für dein Problem.
    Wende doch einfach nl2br($text); an und ersetze mit str_replace(); alle HTML "<br>"'s.
    Sprich
    PHP-Code:
    $text nl2br($text);
    $text str_replace("<br>"," ",$text); 
    Ich denke das es nicht die sinnvollste und schnellste Methode ist, aber dass sie funktioniert
    Gruß

    Kommentar


    • #3
      schau dir den quelltext von der ausgabe an, dann weißt du was du replacen musst.

      Kommentar


      • #4
        Thx dex, Aber der Zeilenbruch muss drin bleiben.

        Und im Quelltext wird <br /> zum Zeilenbruch verwendet. Aber diese Zeichen kann ich nicht ersetzten weil es wohl
        nicht da ist. Jedenfalls wenn ich für <br /> ein - haben will kommt nichts.
        Was kann ich da noch tun?

        thx

        Kommentar


        • #5
          ich habe es jetzt auch so versucht
          PHP-Code:
                  $text =nl2br($text);
                  
          $text ereg_replace '<br />''x'$text ); 
          Aber auch so wird nichts ersetzt

          Kommentar


          • #6
            check:
            PHP-Code:
            $charLength 50;

            if(
            preg_match('~.{'.$charLength.'}~'$text))
            {
               
            // do...

            extrahieren:
            PHP-Code:
            preg_match('~(?:.{'.$charLength.'})~'$text$results);
            var_dump($results); 
            done...

            Kommentar


            • #7
              Wenn du Zeilenumbrüche ersetzten möchtest musst du diese in " " Schreiben und nicht in ' ' denn sonst wird das nicht als Sequenz zum Umbrechen erkannt sondern als String der einfach \n schreibt.

              Kommentar


              • #8
                Hallo Kay du darfst auch selbständig ein wenig denken. Allerdings sehe ich bei deinem Vorhaben auch das du nicht weit genug denkst. Du willst das bei Zeilenumbrüchen machen und du willst das bei Leerzeichen machen, eine Wortlänge prüfen. Was machst denn aber wenn jemand ein Punkt, oder einen Doppelpunkt ein Komma oder oder oder setzt und danach ohne Leerzeichen ein Wort eingibt? Da schlägt deine ganze Prüfung etc. nämlich ganz spektakulär fehl und ich haue dir da ein Wort rein was 1000 Zeichen durch gehend hat und es wird angezeigt.

                Mein Vorschlag, mache dir ein Array mit allen üblichen Zeichen die als Trennzeichen vorkommen können und für dann ein str_replace auf Arrays aus. Mache zusätzlich am besten noch ein Blacklist Array mit Zeichen die in dem eingegeben Text gar nicht vorkommen dürfen. Und dann passt deine Prüfung wieder.

                Kommentar


                • #9
                  Seine Frage war :
                  Ich will in einen Text prüfen, ob da ein Wort mit mehr als x zeichen exestiert.

                  Antwort:
                  PHP-Code:
                  $charLength 50;

                  if(
                  preg_match('~.{'.$charLength.'}~'$text))
                  {
                     
                  // do...

                  Kommentar


                  • #10
                    Und der Ausdruck erkennt, was ein einzelnes Wort ist?

                    Kommentar


                    • #11
                      @Celli dieser Ausdruck erkennt wie lang der gesammte Text ist und nciht ein einzelnes Wort in dem String!

                      Bitt achte auf die Qualität deiner Beiträge, auch wenn du nur helfen willst. Ich bin kein Regex Experte aber verwende preg_match sehr oft zur Feldvalidierung und weis mit ziemlicher Sicherheit das dein Regex nicht funktioniert für die Aufgabe des TO's.

                      Kommentar


                      • #12
                        Dieses schon:
                        PHP-Code:
                        $textLength 50;
                        if(
                        preg_match('~(?:\w{'.$textLength.'})~'$text))
                        {
                           
                        //do..

                        @litterauspirna
                        1. Ich will "nur" helfen
                        2. Wo ist da keine "Qualität" ?

                        Kommentar


                        • #13
                          Zitat von Celli Beitrag anzeigen
                          Dieses schon:
                          PHP-Code:
                          $textLength 50;
                          if(
                          preg_match('~(?:\w{'.$textLength.'})~'$text))
                          {
                             
                          //do..

                          @litterauspirna
                          1. Ich will "nur" helfen
                          2. Wo ist da keine "Qualität" ?
                          Ich weis das du nur helfen willst, das sollte dich auch nicht angreifen. Dein zweiter Code würde denke ich funktionieren, aber der erste eben nicht und deshalb schrieb ich das. Das mit der Qualität war deshalb geschrieben, das du nicht Code mit postest der Fehlerhaft ist, also auf keinen Fall persönllich oder angreifen gemeint. Sollte das so rüber gekommen sein, dann bitte ich um Entschuldigung.

                          Kommentar


                          • #14
                            Hatte die Umlaute vergessen bei der Prüfung. Andere Sonderzeichen können noch eingefügt werden.
                            PHP-Code:
                            $textLength 50;
                            if(
                            preg_match('~(?:([äöüÄÖÜ])?\w){'.$textLength.'}~'$text))
                            {
                               
                            // do ...

                            @litterauspirna
                            Der Weg ist das Ziel. Der Code war nicht Fehlerhaft, sondern erfüllte seinen Zweck nicht. Ich versuche in Zukunft dies zu verhindern.

                            Kommentar


                            • #15
                              thx@all

                              ich habe das zeichen was ein zeilenbruch macht: "\r\n". Ich habe es duch " \r\n" ersätzt.

                              Kommentar

                              Lädt...
                              X