Avatar billede tipsen Nybegynder
30. oktober 2003 - 01:26 Der 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.

På forhånd tak :-)

Mvh

Tipsen
Avatar billede detox Nybegynder
30. oktober 2003 - 02:55 #1
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.
Avatar billede detox Nybegynder
30. oktober 2003 - 02:57 #2
Skal man være på den sikre side kunne man begrænse extensions til 3 eller 4 tegn:

<?
$filnavn = "dk-globeOms_geog-dem_e.4e";
$str = strtolower($filnavn);
$pat = "|^[\w\d-]+[\.]?[\w\d]{3,4}$|";
if (preg_match($pat,$str)) echo $str;
else echo "No good!";
?>
Avatar billede detox Nybegynder
30. oktober 2003 - 03:00 #3
Hov, den tillader underscore i extension. Skal nok være:

$pat = "|^[\w\d-]+[\.]?[a-z0-9]{3,4}$|";
Avatar billede tipsen Nybegynder
22. februar 2004 - 23:52 #4
detox: Smider du et svar?
Avatar billede detox Nybegynder
23. februar 2004 - 00:16 #5
Jo
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester