Diese Regex schneidet das letzte Wort in der Zeichenkette ab, obwohl die Zeichenkette in einem akzeptablen Bereich liegt

$theExcerpt = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis'

$theExcerptAppend = (strlen($theExcerpt) > 156) ? '...' : '';
$theExcerpt = preg_replace('/\s+?(\S+)?$/', '', substr($theExcerpt, 0, 156));
$theExcerpt .= $theExcerptAppend;

Solange die Länge der Eingabephrase 156 Zeichen überschreitet, funktioniert das Skript einwandfrei. Wenn jedoch die Länge geringer als 156 ist (wie hier bei 154), wird das letzte Wort gelöscht, auch wenn die Zeichenfolge, einschließlich des Wortes, immer noch geringer als 156 ist.

Hinweis: Ich möchte nicht, dass die Zeichenfolge in der Mitte eines Wortes endet, aber wenn die Einbeziehung des Wortes den strlen-Wert von 156 nicht überschreitet, sollte sie eingeschlossen werden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage