Jak uzyskać pierwsze x znaków z łańcucha, bez odcinania ostatniego słowa?

W zmiennej mam następujący ciąg.

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

Chcę pobrać pierwsze 28 znaków z powyższej linii, więc normalnie, jeśli używamsubstr wtedy mi to daStack Overflow is as frictio to wyjście, ale chcę, aby dane wyjściowe były następujące:

Stack Overflow is as...

Czy jest w PHP jakaś funkcja, która mogłaby to zrobić, czy też proszę podać kod do tego w PHP?

Edytowane:

Chcę napisać 28 znaków z łańcucha bez łamania słowa, jeśli zwróci mi kilka mniej niż 28 znaków bez złamania słowa, w porządku.