Я нахожу, что это работает:
function abbreviate_string_to_whole_word ($ string, $ max_length, $ buffer) {
if (strlen($string)>$max_length) {
$string_cropped=substr($string,0,$max_length-$buffer);
$last_space=strrpos($string_cropped, " ");
if ($last_space>0) {
$string_cropped=substr($string_cropped,0,$last_space);
}
$abbreviated_string=$string_cropped." ...";
}
else {
$abbreviated_string=$string;
}
return $abbreviated_string;
}
Буфер позволяет вам чтобы отрегулировать длину возвращаемой строки.
Не уверен относительно вашего точного вопроса, но попробуйте использовать StreamReader из System.IO, это довольно просто и прямо.