PHP : Jak skrócić tekst po określonej liczbie znaków nie ucinając słów?

Teoretycznie zadanie jest proste do rozwiązania. Używając funkcji

Thank you for reading this post, don't forget to subscribe!
substr() 

skrócimy pożądany ciąg znaków na docelową długość, jednak problem pojawia się gdy dzielimy słowa które zawierają polskie znaki lub tekst posiada znaczniki html.. Jak sobie z tym poradzić?

Oto funkcja

cut()

, która nam to umożliwi..

public function cut($tekst,$ile){

// pozbywam się tagów HTML z tekstu
$tekst = strip_tags($tekst);

// jeśli tekst jest dłuższy od podanej ilość znaków w zmiennej $ile
// wykonuje się warunek
   if (strlen($tekst) > $ile) {

// pierwsze skrócenie tekstu
      $tekst=substr($tekst, 0, $ile);

// drugie skrócenie tekstu - skraca do momentu wystąpienia ostatniej spacji w skróconym tekście
// przez co nie ucina nam słów w połowie i nie wyskakują "krzaki"
      for ($a=strlen($tekst)-1;$a>=0;$a--) {
         if ($tekst[$a]==" ") {

//wyświetlenie na końcu tekstu trzech kropek
         $tekst=substr($tekst, 0, $a)."...";
         break;
         };
      };
   };

// zwracanie prze-formatowanego tekstu
return $tekst;
}

Jak ta funkcję użyć?
Przedstawiam przykład:


 function cut($tekst,$ile){

$tekst = strip_tags($tekst);

   if (strlen($tekst) > $ile) {
      $tekst=substr($tekst, 0, $ile);
      for ($a=strlen($tekst)-1;$a>=0;$a--) {
         if ($tekst[$a]==" ") {
         $tekst=substr($tekst, 0, $a)."...";
         break;
         };
      };
   };
return $tekst;
}

$tekst="Przykładowy tekst do skrócenia wykorzystany w przykładzie na stronie hackwars.pl ";

echo cut($tekst, 60);

Wynikiem działania programu będzie: Przykładowy tekst do skrócenia wykorzystany w…