5

I'm making a SWF uploader and have my HTML form done.

It works totally fine until I upload a SWF file with spaces in the name.

How can I replace whitespace with underscores?

I have tried...

str_replace(" ","_", $file);

...and...

preg_replace(" ","_", $file);
alex
  • 479,566
  • 201
  • 878
  • 984
Suf
  • 51
  • 1
  • 1
  • 2

3 Answers3

14

How can I replace whitespace with underscores?

The \s character class will match whitespace characters. I've added the + quantifier to collapse multiple whitespace to one _. If you don't want that, remove the +.

$file = preg_replace('/\s+/', '_', $file);
alex
  • 479,566
  • 201
  • 878
  • 984
7

the function is correct but you have to assign it to a variable.

$filename = str_replace/preg_replace(" ","_", $file);
ave4496
  • 2,950
  • 3
  • 21
  • 48
4

I usually approach it from the other side and only allow characters from a white-list; I replace everything except these characters:

$file = preg_replace("/[^-_a-z0-9]+/i", "_", $file);
jeroen
  • 91,079
  • 21
  • 114
  • 132