I think the norm for protecting against angle brackets is to use htmlspecialchars() or strip_tags() rather than regex.
As for dealing with whitespace, it depends.
I suppose you would want to allow whitespace, not would not want extra whitespace in the middle or those in front/back.
Then, you could use trim() followed by $text = preg_replace("/[\r\n\t ]+/", " ", $text);