You should be able to add the \n (no quotes) within your character class. However, remember that newlines are treated as spaces in HTML output (unless within a <pre> element or other element that has been styled as "white-space:pre". So, when you output it to the browser, you may need to use [man]nl2br/man or your own custom function to deal with the newlines so that they display as desired.
As to a better way to to it, the question might be: do you need to filter out certain characters from the input, or just control how they are output, either by using [man]strip_tags/man, [man]htmlspecialchars/man or [man]htmlentities/man?