rezix: Text schneiden bei 100 Zeichen

Hallo
ich möchte einen text schneiden bei 100 Zeichen

jedoch ist das problem.. das er folgendes nun macht:

substr($row['text'], 0, 100)

Ein text kommt mit 120 Zeichen dann schneidet er bei 100 Zeichen, jedoch ist das Wort welches bei 100 Zeichen verschnitten wird nicht komplett kann man da programmieren das er bei 100 Zeichen beim nächsten whitespace (leertaste) schneidet? damit das letzte wort noch komplett ist?

gruss
rezix

  1. Müsste mit Regex funktionieren:

    z.B.:
    $text=~s/^(.{0,100}.*?)(\s.*)?$/$1/;

    1. Müsste mit Regex funktionieren:

      z.B.:
      $text=~s/^(.{0,100}.*?)(\s.*)?$/$1/;

      $text=$row['text'];
      $text="~s/^(.{0,100}.*?)(\s.*)?$/$1/";

      jetzt gibt er ~s/^(.{0,100}.*?)(\s.*)?$/$1/ das heraus.

      1. Mahlzeit,

        Müsste mit Regex funktionieren:

        $text=~s/^(.{0,100}.*?)(\s.*)?$/$1/;

        $text="~s/^(.{0,100}.*?)(\s.*)?$/$1/";

        jetzt gibt er ~s/^(.{0,100}.*?)(\s.*)?$/$1/ das heraus.

        Kein Wunder - was sollen die Anführungsstriche? Kleiner, aber feiner Unterschied ...

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Mahlzeit,

          Müsste mit Regex funktionieren:

          $text=~s/^(.{0,100}.*?)(\s.*)?$/$1/;

          $text="~s/^(.{0,100}.*?)(\s.*)?$/$1/";

          jetzt gibt er ~s/^(.{0,100}.*?)(\s.*)?$/$1/ das heraus.

          Kein Wunder - was sollen die Anführungsstriche? Kleiner, aber feiner Unterschied ...

          MfG,
          EKKi

          Parse error: syntax error, unexpected '^' in /XYZ.php on line 112
          Zeile:112 $text=~s/^(.{0,100}.*?)(\s.*)?$/$1/;

          Ich muss dazu erwähnen das ich ein XML auslese aber sollte doch keinen unterschied machen?

          1. Mahlzeit,

            Müsste mit Regex funktionieren:
            Parse error: syntax error, unexpected '^' in /XYZ.php on line 112
            Zeile:112 $text=~s/^(.{0,100}.*?)(\s.*)?$/$1/;

            Ich muss dazu erwähnen das ich ein XML auslese aber sollte doch keinen unterschied machen?

            Das nicht, aber wenn du im Topic Perl angibst und uns hier einen Syntaxerror von PHP präsentierst ist das schon spannend ;)

            Für PHP verwendest du z.B. die Funktion preg_replace:

            preg_replace("/^(.{0,100}.*?)(\s.*)?$/","\1",$text);

            1. Für PHP verwendest du z.B. die Funktion preg_replace:

              preg_replace("/^(.{0,100}.*?)(\s.*)?$/","\1",$text);

              Aha ok..

              ich habe folgende Aufstellung:
              $text = $row['text'];
              preg_replace("/^(.{0,100}.*?)(\s.*)?$/","\1",$text);

              und in der Ausgabe des XML:
               "\t\t<text>".htmlspecialchars($text)."</text>\r\n";

              aber tutet nix?

              1. $text = $row['text'];
                preg_replace("/^(.{0,100}.*?)(\s.*)?$/","\1",$text);

                $text=preg_replace("/^(.{0,100}.*?)(\s.*)?$/","\1",$text);
                --> http://de3.php.net/manual/en/function.preg-replace.php

                1. $text=preg_replace("/^(.{0,100}.*?)(\s.*)?$/","\1",$text);
                  --> http://de3.php.net/manual/en/function.preg-replace.php

                  ist eventuell das suchmuster falsch?
                  weil es wird mir der ganze text angezeigt

                  1. $text=preg_replace("/^(.{0,100}.*?)(\s.*)?$/","\1",$text);
                    --> http://de3.php.net/manual/en/function.preg-replace.php
                    ist eventuell das suchmuster falsch?
                    weil es wird mir der ganze text angezeigt

                    Bei mir gehts:

                      
                    <?  
                    $text="test test test test test test test blah blah blah blah blah blah blah blah perl perl perl perl peeerl perl hello hello hello hello hello hello hello hello hello hello hello lala lala lalala lala lalala";  
                      
                    $text=preg_replace("/^(.{0,100}.*?)(\s.*)?$/","\\1",$text);  
                      
                    print $text."\n\n";  
                    ?>  
                    
                    

                    -->
                    php test.php
                    test test test test test test test blah blah blah blah blah blah blah blah perl perl perl perl peeerl

                    1. Bei mir gehts:

                      in einem test.php bei mir funktionierts auch aber in meinem xml.php nicht?????
                      $text = $row['text'];
                      $text=preg_replace("/^(.{0,100}.*?)(\s.*)?$/","\1",$text);

                      $xml = "\t\t<text>".htmlspecialchars($text)."</text>\r\n";

                      WO ist das problem????

      2. Na dann lass mal die Anführungszeichen weg ;)

    2. gudn tach!

      $text=~s/^(.{0,100}.*?)(\s.*)?$/$1/;

      man kann evtl. noch etwas zeit sparen und den code etwas uebersichtlicher halten:
        $text=~s/^(.{0,100}\S*).*$/$1/;

      prost
      seth