A one liner which will work exactly as wanted (you don't even need array_filter
):
$s = "ben say (ewfs) as";
$parts = preg_split('/\s+|(\()|(\))/', $s, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY)
/*
Array(
0 => "ben",
1 => "say",
2 => "(",
3 => "ewfs",
4 => ")",
5 => "as",
)
*/