(Sorry, I hit the wrong button and sent the reply only to Skip.)

On Wed, Jun 03, 2009 at 11:18:57AM -0500, Skip Evans wrote:

> Hey all,
>
> I have a file uploader module that allows users to upload
> documents and of course people are using all kinds of file
> names that are not web friendly.
>
> I guess the best solution is to replace any non alphanumeric
> with maybe '_' the underscore? How does that sound?
>
> Unfortunately, after 20+ years of coding I cannot get my brain
> around regular expressions to any decent level of proficiency,
> I know sad.
>
> I'd like to hear other solutions for this problem, I am
> thinking of a regexp that replaces special chars with the
> underscore; sounds pretty robust and globally acceptable?
>
> Opinions, witticisms, flames, quotations by famous d├ębutantes?

Here's what I do on some of my webpages:

$fname = preg_replace("%[^A-Za-z0-9_\.]%", "_", $_POST['fname']);

This says to replace any character which isn't alphanumeric or
underscore or period, with an underscore. You can add characters to the
first expression in preg_replace to allow more characters, or change the
underscore expression with nothing ("") or whatever. I typically simply
eliminate bad stuff by using "" as the second parameter for
preg_replace.

To expand further on one thing: inside the first parameter, you'll see
the open square bracket ([) which indicates the beginning of a character
grouping or class. The next character, the caret (^) indicates negation.
So that expression means that anything which doesn't match these
characters gets whatever the next parameter is.

Paul

-- 
Paul M. Foster

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to