kostenloser Webspace werbefrei: lima-city


String ab dem n-ten Leerzeichen abschneiden?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    seofav

    seofav hat kostenlosen Webspace.

    Hallo

    ich will einen Text ab dem n-ten Vorkommen eines Leerzeichens abschneiden.
    so, dass quasi nur eine bestimmte Anzahl won Worten erlaubt ist

    also muss ich den Strint in Array zerlegen (mit Trenner = Leerzeichen)
    und davon dann die Array-Elemente die zuviel sind abschneiden
    und dann das "gekürzte" Array wieder zu einem Ergebnis-String machen

    oder gibt es eine einfachere Möglichkeit um einen String auf n Worte zu kürzen ?

    Danke
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du benutzt explode mit dem limit-Parameter. Zum zusammenbauen nutzt du danach implode.
  4. Autor dieses Themas

    seofav

    seofav hat kostenlosen Webspace.

    chatter schrieb:
    Du benutzt explode mit dem limit-Parameter. Zum zusammenbauen nutzt du danach implode.


    richtig, so mache ich es bis jetzt,

    die Frage war ja aber, ob es eine andere Möglichkeit gibt,
    ohne in Array zerlegen und String wieder zusammensetzen
    evtl. gibts ja was einfacheres, Ressourcen-Schonender ... ?
  5. Nicht wirklich. Vielleicht noch mit einem Regex...

    Ansonsten nur sowas:

    <?php
    $text = 'Dies ist ein Test. Wenn alles gut läuft, sollte der Text nach diesem Wort abgeschnitten werden.'; 
    $capture = 13; // Anzahl der Leerzeichen, nach denen abgeschnitten werden soll
    
    echo implode(' ', array_slice($words = explode(' ', $text), 0, $capture))."<br>\n"; 
    echo implode(' ', array_slice($words, $capture)); 
    ?>


    EDIT:

    Vielleicht hilft dir auch das weiter: http://php.net/manual/de/function.str-word-count.php

    Beitrag zuletzt geändert: 22.12.2011 13:41:02 von fabo
  6. Also ich würde das ohne irgendwelche impact oder explode Funktionen machen, indem du den String einfach mit einer For-Schleife durchläufst (im Prinzip ist ein String ja ein Array von lauter einzelner Character), und dabei die Anzahl der Leerzeichen mitzählst.

    Hier mal eine Funktion (mir steht im Moment kein PHP zur Verfügung, daher werde ich das hier geschriebene nachher nochmal auf Fehler überprüfen):

    <?php
    function string_abschneiden ( $string, $zahl )
    {
      $zaehler = 0;
      for ($i = 0; $i <= strlen($string); $i++)
      {
        if ( $string[$i] == ' ' )
          $zaehler++;
        if ( $zaehler > $zahl )
          return $newstring;
        $newstring[$i] = $string[$i];
      }
      return $newstring;
    }
    
    //Beispielaufruf:
    $string = 'Mermadalis ist der coolste Typ auf Erden';
    echo string_abschneiden ( $string, 2 );
    
    //Ausgabe müsste sein: Mermadalis ist der
    ?>



    __________________________________________________________

    So, PHP wieder installiert und den Code überarbeitet (waren ein paar kleine Fehler drin, weil ich alles from scratch geschrieben habe):

    <?php
    function string_abschneiden ( $string, $zahl )
    {
      $zaehler = 0;
      $newstring = '';
      for ($i = 0; $i <= strlen($string); $i++)
      {
        if ( $string[$i] == ' ' )
          $zaehler++;
        if ( $zaehler > $zahl )
          return $newstring;
        $newstring .= $string[$i];
      }
      return $newstring;
    }
    
    //Beispielaufruf:
    $string = 'Mermadalis ist der coolste Typ auf Erden';
    echo string_abschneiden ( $string, 2 );
    
    //Ausgabe müsste sein: Mermadalis ist der
    ?>


    Beitrag zuletzt geändert: 22.12.2011 17:05:53 von mermadalis
  7. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Erst mal sind hier 2 Fehler:
    seofav schrieb:
    ... also muss ich den Strint in Array zerlegen (mit Trenner = Leerzeichen)
    String schreibt man mit t
    mermadalis schrieb:
    Also ich würde das ohne irgendwelche impact oder explode Funktionen machen, ...
    Du meinst wohl implode (impact gibt es gar nicht!). Aber wieder zurück zum Thema:

    Die Variante mit explode und implode ist warscheinlich schneller als die Variante mit der for-Schleife, da implode und explode in C ausprogrammiert sind und nicht erst interpretiert werden müssen. Dies gilt jedenfalls für Strings mit wenigen Wörtern.
    Wenn du hingegen ein ganzes Buch so abtrennen willst wird die for-Schleife warscheinlich weit schneller sein als implode und explode weil nicht jeweils erst ein Array erstellt und danach wieder zu einem String zusammengefügt werden muss.
    Es hängt also von der Wortanzahl ab welche Methode die Bessere ist.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!