In either case, no, not really. You are doing it right. The only thing I would mention is that if you ever want to replace multiple characters, to use preg_replace() instead of creating a str_replace for each one (especially if you are going to replace each character with a space).

But you are using RewriteRules to do what they were intended, granted, @dklynn ; would give you a very long drawn out rant over the use of (.*), as it is a catch all, when you likely could have used ([a-zA-Z0-9 -]+)