30. oktober 2003 - 01:26Der er
4 kommentarer og 1 løsning
Regulær expression til validering af filnavn
Hej eksperter
Jeg har brug for en regulær expression der kan validere et filnavn der foreslås af en bruger til en uploaded fil. Regexp'en skal bl.a. sikre misbrug af funktionen, men også sikre at der bruges nogle filnavne, som vil være funktionelle på både linux, windows og mac.
Jeg kender ikke så meget til filnavn-syntax på linux og mac - altså hvad er tilladt/forbudt?
En ide må være at lave en regulær expression udfra laveste fællesnævner for de forskellige filsystemer.
Hvis problemet kan løses på anden måde er jeg selvfølgelig også åben for dette.
Jeg vil mene, at skal man være på den sikre side, skal man holde sig til små bogstaver, tal, bindestreg og evt. underscore, samt en evt. extension. Så vidt jeg ved er der ikke nogen praktisk begrænsning på længden af filnavnet. Linux er, modsat windows, casesensitive, så det er nok at foretrække at holde sig til små bogstaver. Mit forslag til en regexp:
<? $filnavn = "dk-globeOms_geog-dem_e.n14e"; $str = strtolower($filnavn); $pat = "|^[\w\d-]+[\.]?[\w\d]+$|"; if (preg_match($pat,$str)) echo $str; else echo "No good!"; ?>
Men jeg er i tvivl omkring hvor lang en evt extension må/skal være, så det er muligt det osse skal begrænses.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.