Esta expresión regular está cortando la última palabra en la cadena a pesar de que strlen está dentro del rango aceptable

$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;

Siempre que la longitud de la frase de entrada exceda los 156 caracteres, la secuencia de comandos funciona bien. Sin embargo, cuando la longitud es menor que 156 (como se encuentra aquí en 154), la última palabra que se omite, incluso si la cadena, incluida la palabra, es aún menor que 156.

Nota: No quiero que la cadena termine en medio de una palabra, pero si la inclusión de la palabra no excede el valor de strlen de 156, se debe incluir.

Respuestas a la pregunta(4)

Su respuesta a la pregunta