I need to remove all characters from a string which aren't in
a-z A-Z 0-9 set or are not spaces.
Does anyone have a function to do this?
Sounds like you almost knew what you wanted to do already, you basically defined it as a regex.
preg_replace("/[^A-Za-z0-9 ]/", '', $string);
For unicode characters, it is :
preg_replace("/[^[:alnum:][:space:]]/u", '', $string);