ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
1837
1837
EMPFEHLEN
-
04.04.07 16:09 #1
- 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
-
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
-
04.04.07 18:52 #3
-
05.04.07 09:59 #4
- Registriert seit
- Mar 2007
- Ort
- Europa
- Beiträge
- 116
suchst du so was?PHP-Code:function getShortDescr($letters = 250)
{
if (strlen(trim($this->descr)) > $letters)
{
$retVal = substr(trim($this->descr), 0, $letters - 4);
return substr($retVal, 0, strrpos($retVal, " ")) . " ...";
}
else
return $this->descr;
}
Dirk----------------------------------------
http://www.edv-mueller.com
dirk @ mueller minus web dot org
-
Die Funktion sieht ja schon mal sehr gut aus. Hier nochmal zwei andere, wahrscheinlich etwas langsamere Varianten:
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) {
$text = trim($text);
if (strlen($text) <= $length) {
return $text;
}
$text = explode(" ", substr($text, 0, $length));
array_pop($text);
return implode(" ", $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.PHP-Code:function kurz($text, $length) {
return trim(preg_replace('/^(.{0,'.$length.'} ).*$/', '$1', $text));
}
Geändert von Papier (05.04.07 um 13:18 Uhr)
-
05.04.07 11:50 #6
- Registriert seit
- Mar 2007
- Ort
- Europa
- Beiträge
- 116
----------------------------------------
http://www.edv-mueller.com
dirk @ mueller minus web dot org
-
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.
-
13.04.07 11:25 #8
- Registriert seit
- Mar 2007
- Beiträge
- 2
Hallo zusammen,
genau das habe ich gesucht!
Vielen Dank.
Juhuhuhuhu
Ähnliche Themen
-
Abstand zwischen zwei <img>-Tags
Von Trash im Forum CSSAntworten: 1Letzter Beitrag: 14.10.10, 06:32 -
Wort zwischen 2 bekannten Wörtern auslesen (String)
Von Autun im Forum .NET CaféAntworten: 2Letzter Beitrag: 17.11.09, 01:22 -
Modellierung von zwei Beziehungen zwischen zwei Klassen in Hibernate
Von janw im Forum JavaAntworten: 1Letzter Beitrag: 26.05.06, 13:24 -
Zwischen zwei Werten
Von formmad im Forum Flash PlattformAntworten: 2Letzter Beitrag: 17.02.06, 10:38 -
flv als Blende zwischen zwei swfs
Von Maxheadroom im Forum Flash PlattformAntworten: 5Letzter Beitrag: 08.02.05, 12:28





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren