Mit substr zwischen Satz zwischen zwei Wörtern trennen

juhuhuhuhu

Grünschnabel
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.
 
PHP:
	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;
	}

suchst du so was?

Dirk
 
Die Funktion sieht ja schon mal sehr gut aus. Hier nochmal zwei andere, wahrscheinlich etwas langsamere Varianten:

PHP:
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)." ...";
}

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:
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.
 
Zuletzt bearbeitet:
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.
 
Zurück