tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
1837
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    juhuhuhuhu juhuhuhuhu ist offline Grünschnabel
    Registriert seit
    Mar 2007
    Beiträge
    2
    Hallo zusammen,
    ich möchte mit substr() einen Satz trennen. Klassischer Weise kann ich angeben, nach welchem Zeichen der "Schnitt" gesetzt werden soll. Irgendwie macht mich diese Lösung nicht sonderlich glücklich, schneidet sie doch willenlos Wörter ab.

    Hat einer von Euch eine Idee, wie ich substr() dazu bringe, möglichst an der nächstliegenden Leerstelle zu schneiden?

    Wär groß!

    Vielen Dank,
    juhuhuhuhu
     

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Die substring()-Funktion liefert nur eine Teilzeichenkette der übergebenen Zeichenkette, die durch Startposition und Länge des Teils bestimmt wird. Es ist also direkt nicht möglich ein bestimmtes Zeichen anzugeben, an dem getrennt werden soll.
     
    Markus Wulftange

  3. #3
    Avatar von tobee
    tobee tobee ist offline Grolba.com media
    Registriert seit
    Jul 2005
    Ort
    Karlsruhe
    Beiträge
    1.700
    Blog-Einträge
    131
    In Kombination von strpos ist substr effektiver.
     

  4. #4
    Niederbobi Niederbobi ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Europa
    Beiträge
    116
    PHP-Code:
        function getShortDescr($letters 250)
        {
            if (
    strlen(trim($this->descr)) > $letters)
            {
                
    $retVal substr(trim($this->descr), 0$letters 4);
                return 
    substr($retVal0strrpos($retVal" ")) . " ...";
            }
            else
                return 
    $this->descr;
        } 
    suchst du so was?

    Dirk
     
    ----------------------------------------
    http://www.edv-mueller.com
    dirk @ mueller minus web dot org

  5. #5
    Papier Papier ist offline Mitglied Bronze
    Registriert seit
    Jul 2003
    Beiträge
    43
    Die Funktion sieht ja schon mal sehr gut aus. Hier nochmal zwei andere, wahrscheinlich etwas langsamere Varianten:

    PHP-Code:
    function kurz($text$length) {
      
    $text trim($text);
      if (
    strlen($text) <= $length) {
        return 
    $text;
      }
      
    $text explode(" "substr($text0$length));
      
    array_pop($text);
      return 
    implode(" "$text)." ...";

    Zu der Zeit hab ich alles mögliche mit explode gemacht und ich weiß nicht ob das besonders performant ist, vielleicht geht das mit nem regulären Ausdruck etwas schneller:

    PHP-Code:
    function kurz($text$length) {
      return 
    trim(preg_replace('/^(.{0,'.$length.'} ).*$/''$1'$text));

    In beiden Fällen wird mit $length nur die maximale Länge angegeben, die der zurückgegebene Text haben darf. Für eine Trennung beim nächstliegenden Leerzeichen musst du wahrscheinlich in einer Schleife immer abwechselnt $i Zeichen links und rechts vom Richtwert nach einem Leerzeichen suchen lassen und da dann den Text trennen.
    Geändert von Papier (05.04.07 um 13:18 Uhr)
     

  6. #6
    Niederbobi Niederbobi ist offline Mitglied Gold
    Registriert seit
    Mar 2007
    Ort
    Europa
    Beiträge
    116
    Zitat Zitat von Papier Beitrag anzeigen
    Das letzte Beispiel schneidet den Text ja auch mitten im Wort ab, ...
    .. hab ich bisher so noch nicht bemerkt!

    PHP-Code:
    substr($retVal0strrpos($retVal" ")) 
    schneidet ja gerade erst am letzten Vorkommen eines ' ' ab.

    Dirk
     
    ----------------------------------------
    http://www.edv-mueller.com
    dirk @ mueller minus web dot org

  7. #7
    Papier Papier ist offline Mitglied Bronze
    Registriert seit
    Jul 2003
    Beiträge
    43
    Tut mir Leid, das hab ich wohl tatsächlich übersehen und hab selber noch nichtmal an strrpos gedacht. Na gut, wenn man keine Ahnung hat...

    Meine Empfehlung also auch der Vorschlag von Niederbobi, das müsste noch ein ganzes Stück schneller sein.
     

  8. #8
    juhuhuhuhu juhuhuhuhu ist offline Grünschnabel
    Registriert seit
    Mar 2007
    Beiträge
    2
    Hallo zusammen,

    genau das habe ich gesucht!

    Vielen Dank.

    Juhuhuhuhu
     

Ähnliche Themen

  1. Abstand zwischen zwei <img>-Tags
    Von Trash im Forum CSS
    Antworten: 1
    Letzter Beitrag: 14.10.10, 06:32
  2. Antworten: 2
    Letzter Beitrag: 17.11.09, 01:22
  3. Antworten: 1
    Letzter Beitrag: 26.05.06, 13:24
  4. Zwischen zwei Werten
    Von formmad im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 17.02.06, 10:38
  5. flv als Blende zwischen zwei swfs
    Von Maxheadroom im Forum Flash Plattform
    Antworten: 5
    Letzter Beitrag: 08.02.05, 12:28