Use substr() to cut the text to 200 characters. Then use strrpos() to find the last occurance of a space in that substring. Using that number as the length, use substr() again.
$body = substr($body, 0, 200);
$pos = strrpos($body, ' ');
$body = substr($body, 0, $pos + 1);
Your code won't work because, it looks to me, it starts its search for a space at the end of the text where it immediately fails, having nothing left to search in.