Buda kelime sınırlama belki lazım olur diye belirteyim dedim :

$yazi = "kısaltılacak metin buraya gelecek"
$kelime = explode(" ",$yazi);
$say = count($kelime);
$sinir = 30;
if($say <= $sinir) { $kes = $say*50/100; }
else { $kes = $sinir; }
for($i = 0; $i <= $kes; $i++)
{ echo $kelime[$i].' ' ; }