La llamada a una función no se hace con "function" delante .. eso sólo se usa para definir tu función .. Además la función sólo "procesa" .. devuelve un resultado que tendras que usar un "echo" si quieres verlo .... (tal vez sea un problema al transcribir tus ejemplos en el foro .. ??)
Código PHP:
function cortar_frase($frase_entrada,$cortar){
$frase_corta=substr($frase_entrada,0,$cortar); // obtener la frase cortada.
$palabras=str_word_count($frase_corta,1); // obtener array con las palabras.
$total_palabras=count($palabras)-1; // contar total array elementos y restar 1 elementos
$palabras=array_splice($palabras,0,$total_palabras ); // le quitamos la ultima palabra.
$frase_salida=implode(' ',$palabras); // y concatenamos con el espacio hacia una cadena.
$frase_salida .= "..."; // se añaden los puntos suspensivos a la cadena obtenida..
return $frase_salida;
}
echo cortar_frase(strip_tags($row['text']),10);
Ahora .. puede ser que tengas a su vez problemas con el uso de strip_tags() .. si te fijas en la documentación oficial de dicha función .. dicen que no quita algunas cosas como saltos de liena y códigos similares /n y afines .. Puede ser que todo eso afecte a: str_word_count($frase_corta,1) que cuenta "palabras" .. tal vez se confunda ahí.
Revisa los comentarios de los usuarios de dicha función y prueba sus ejemplos
http://www.php.net/manual/en/function.strip-tags.php
Tambien revisa:
str_replace() para quitar los \n ó \r ó \n\r que pudieran quedar por ahí ...
www.php.net/str_replace
Un saludo,