AllesMeins: Text nach X Zeichen kürzen mit Einschränkungen

Hiho,

ich müssste mehrere Text automatisch nach ~250 Zeichen kürzen. Allerdings sollen in einigen dieser Texte einige Wörter in eckige Klammern gefasst werden, um damit zu verhindern das dieses Wort (oder dieser Satz) abgeschnitten wird. Ich muss also irgendwie ein "Kürze den Text nach 250 Zeichen, solange diese Stelle nicht in den eckigen Klammern liegt" ansonsten soll erst nach der schliessenden eckigen Klammer gekürzt werden. Hat irgendwer einen Tipp für mich, wie sich das realisieren lässt?

Grüsse

Marc

  1. Lieber Marc,

    ich müssste mehrere Text automatisch nach ~250 Zeichen kürzen.

    Also substr($string, 250) oder so ähnlich.

    Allerdings sollen in einigen dieser Texte einige Wörter in eckige Klammern gefasst werden, um damit zu verhindern das dieses Wort (oder dieser Satz) abgeschnitten wird. Ich muss also irgendwie ein "Kürze den Text nach 250 Zeichen, solange diese Stelle nicht in den eckigen Klammern liegt" ansonsten soll erst nach der schliessenden eckigen Klammer gekürzt werden. Hat irgendwer einen Tipp für mich, wie sich das realisieren lässt?

    Angenommen Du hast Deinen Text in $text abgelegt.

      
    $text_gekuerzt = "";  // hier kommt das Endergebnis rein  
    $text_kurz = substr($text, 0, 250);  
      
    // testen, ob gegen Ende eine "[" vorkommt...  
      
    if(strrpos($text_kurz, "[") > 0)  
       {  
       // Text ist zu früh "abgeschnitten" worden?  
       $klammer_auf = strrpos($text_kurz, "[");  
       $klammer_zu = strrpos($text_kurz, "]");  
       if($klammer_zu > 0 && $klammer_zu > $klammer_auf)  
          {  
          // Alles palletti! Klammer innerhalb des Ausschnitts auch wieder geschlossen  
          $text_gekuerzt = $text_kurz;  
          }  
        else  
          {  
          // PROBLEM!!! Text zu früh gekürzt!  
          // -> letzte schließende eckige Klammer finden und Text erweitern  
          $rest_text = substr($text, 251, strlen($text));  
          $klammer_zu = strpos($rest_text, "]");  
          $text_gekuerzt = $text_kurz.substr($rest_text, 0, $klammer_zu);  
          }  
       }  
    // gekuerzter Text liegt nun in $text_gekuerzt vor  
    
    

    Dieser Schnipsel ist ungeprüft! Ausserdem schließt dieser Code einen mangelhaft verklammerten Text nicht aus!

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Hiho,

      danke für die Idee. Hab zwar dein Script nicht verwendet, aber das hat mich immerhin auf eine passende Idee gebracht wie ich da rangehen muss. Jetzt hab ich mir eines gebastelt, das auch gleich "Klammerzeichen" beliebiger Länger unterstützt.

      Grüsse

      Marc

  2. Hello,

    du baust einfach eine Schleife auf, die drei Zähler bedient.

    EK_auf
    EK_zu
    Zeichen

    solange lesen lassen, bis Zeichen > abschneiden ist und EK_auf == EK_zu,
    dann abschneiden.

    Und gut ists

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau