Mailinglisten-Archive |
Hallo Benjamin, > Ich habe in meiner Datenbank ein Textfeld, von dem ich nur die ersten > 100 Zeichen auslesen will, es soll aber nicht mitten im Wort aufhören. haettest du ein wenig im Archiv herumgestobert, waere dir der Thread "string kuerzen" von letzter Woche aufgefallen. Dort habe ich eine Loesung vorgestellt. Aber weil ich ja garnicht so bin, hier noch einmal das Ganze: function is_word_end ($c) /* Ueberprueft, ob der Buchstabe das Ende eines Wortes ist. Rueckgabewert: 0, wenn es sich um einen normalen Buchstaben handelt 1, wenn es das Ende eines Wortes ist (Leerzeichen oder , . ? ! ;) -1, wenn kein einzelner Buchstabe uebergeben wurde */ { // Ist der Parameter wirklich ein Buchstabe? if (!is_string ($c)) return -1; if (strlen ($c) != 1) return -1; // Diese Zeichen Werden als Wortende akzeptiert $signs = array (',', '.', '?', '!', ';', ' '); // Ueberpruefen der einzelnen Zeichen for ($i = 0; $i < count($signs); ++$i) if ($c == $signs[$i]) return 1; return 0; } function StrShorten ($str, $num_chars) /* Kuerzt $str auf $num_chars und nimmt ggf. noch Zeichen mit, damit ein Wort nicht in der Mitte abgeschnitten wird. Rueckgabewert: $str mit einer Laenge von $num_chars + (maximal 20) zusaetzlichen Zeichen */ { // Wurden die richtigen Parameter uebergeben? if (!is_string ($str)) return; if (!is_int ($num_chars)) return; // Es muessen mehr als 0 Buchstaben abgeschnitten werden if ($num_chars < 1) return; // Abschneiden der ersten &num_char Woerter $ret = substr ($str, 0, $num_chars); // Wenn der String kleiner als $num_char ist, wird er direkt ausgegeben if ($num_chars > strlen($str)) return $ret; $added_chars = 0; while (is_word_end (substr($ret, -1)) != 1 && $added_chars++ < 20) $ret = $ret.substr($str, $num_chars++, 1); return $ret; } Einfach StrShorten ($dein_super_string, $anzahl_der_zeichen) aufrufen und gluecklich sein. > Ist das möglich? Prinzipiell ist _alles_ moeglich. Naja, fast jedenfalls... ;-) Gruss, Matthias -- Matthias Luedtke, matthias-luedtke_(at)_gmx.de Afgrnd der Ensparngsmassnhmen bei den Onlne-Kostn ist ab sfort in jedm Wrt von mhr als dri Buchstabn mindestns ein Vkal wegzlassn.
php::bar PHP Wiki - Listenarchive