Como obter x caracteres iniciais de uma string, sem cortar a última palavra?

Eu tenho a seguinte string em uma variável.

Stack Overflow is as frictionless and painless to use as we could make it.

Eu quero buscar os primeiros 28 caracteres da linha acima, então normalmente se eu usarsubstr então vai me darStack Overflow is as frictio esta saída, mas eu quero saída como:

Stack Overflow is as...

Existe alguma função pré-fabricada em PHP para fazer isso, ou por favor me fornecer código para isso em PHP?

Editado:

Eu quero um total de 28 caracteres da string sem quebrar uma palavra, se ela me devolver alguns caracteres a menos que 28 sem quebrar uma palavra, tudo bem.