Use preg_replace()
and instead of [ \t\n\r]
use \s
:
$output = preg_replace('!\s+!', ' ', $input);
From Regular Expression Basic Syntax Reference:
\d, \w and \s
Shorthand character classes matching
digits, word characters (letters,
digits, and underscores), and
whitespace (spaces, tabs, and line
breaks). Can be used inside and
outside character classes.