If you mean by control characters the first 32 ascii characters and \x7F
(that includes the carriage return, etc!), then this will work:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
(Note the single quotes: with double quotes the use of \x00
causes a parse error, somehow.)
The line feed and carriage return (often written \r
and \n
) may be saved from removal like so:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
I must say that I think Bobby's answer is better, in the sense that [:cntrl:]
better conveys what the code does than [\x00-\x1F\x7F]
. So, using ereg_replace
instead of preg_replace
:
ereg_replace('[:cntrl:]', '', $input);