Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Regex for filename

I made the user possible to change file names through a textarea, but now I'm having a regex problem.

As I see for Windows 7, these characters only are not allowed for filenames:

\ / : * ? < > |

But I stubbornly, perhaps also wisely, choose to minimize the regex to ONLY these special characters:

- _ .

All the others should have to be cut.

Can someone help me out with this regex?

preg_replace all but: A-Za-z0-9 and - _ .

I still really don't get the hang of it.

like image 797
TMNuclear Avatar asked Dec 01 '22 22:12

TMNuclear


1 Answers

preg_replace('/[^A-Za-z0-9 _ .-]/', '', $filename);

The [] is a character class and the ^ negates it. So it literally matches anything other than the chars in that group.

Note that - is at the end, as it is a special range character if used elsewhere, e.g. 0-9

like image 93
Paul S Avatar answered Dec 04 '22 02:12

Paul S