Avatar billede avminarm Juniormester
28. december 2008 - 15:13 Der er 12 kommentarer og
1 løsning

Må kun være billedfiler og navn må kun indeholde bogstaver

Hej

Jeg har dette regulære udtryk og er ikke så snild til at få lavet denne lille rettelse.

/\.(gif|jpg|jpeg|png|GIF|JPG|JPEG|PNG)$/

denne virker fint så filen der uploades kun hedder jpg, gif osv, MEN jgev ville gerne have t filnavnet kun må indeholde noget ala
[-a-zA-Z0-9]

Altså kun a-z og 0-9 og - (bindestreg) - hvordan flettes det ind?
Avatar billede roenving Novice
28. december 2008 - 15:23 #1
I hvilket sprog ?-)

I javascript kunne det blive:
/[a-z\d-]+\.(gif|jpe?g|png)$/i

-- hvilket betyder at filnavnet skal slutte med mindst et af de angivne tegn foran et punktum, og så bl.a. de muligheder for fil-endelser, du viser i spørgsmålet (godtager også f.eks. Jpeg, Png osv.!-)
Avatar billede avminarm Juniormester
28. december 2008 - 15:33 #2
det er javascript (jeg bruger JSVAL fra: http://jsval.fantastic-bits.de/ i mit CMS)

Jeg prøver lige dit forslag.
Avatar billede avminarm Juniormester
28. december 2008 - 15:49 #3
nu vægtes alle filer - min regexp ser sådan ud

regexp="/[a-z\d-]+\.(gif|jpe?g|png)$/i"
Avatar billede roenving Novice
28. december 2008 - 15:58 #4
Ingen gåseøjne !-)

regexp = /[a-z\d-]+\.(gif|jpe?g|png)$/i

-- og man kunne måske sikre, at selve filnavnet er rigtigt, mens det, der evt. er  foran, ikke checkes:

regexp = /^(.*[\/\\])?[a-z\d-]+\.(gif|jpe?g|png)$/i

if(regexp.test(ditFilnavn)){
  //Okay
}
Avatar billede avminarm Juniormester
28. december 2008 - 20:59 #5
hva mener du med "det der evt er foran" ?

Det med gåseøjnene stammer fra den måde JSVAL virker på :-) - det står nemlig som en attribut til et alm HTML tag.
Avatar billede avminarm Juniormester
28. december 2008 - 21:03 #6
hmmm - den tillader stadigvæk en fil der hedder: en_fil_med_underscore.jpg?
Avatar billede nielle Nybegynder
29. december 2008 - 09:53 #7
Husk et '^' i starten og '$' i slutningen.
Avatar billede avminarm Juniormester
30. december 2008 - 09:39 #8
hvad nu hvis det skulle laves som en php funktion?

skal det se således ud:

function testFil($fil){
  if(ereg(/[a-z\d-]+\.(gif|jpe?g|png)$/i), $fil){
    Return true;
  }
}
Avatar billede roenving Novice
30. december 2008 - 11:50 #9
Okay til det med gåseøjnene !-)

-- men jeg fanger underscore, når jeg prøver ...

-- og det, der evt. er foran er drev, filsti m.m. som sagtens kan være i en file-input !o]

-- og gåseøjnene skal netop med, når du laver noget i php ...

-- og i forventning om, at du har slået ereg-funktionen rigtigt op,  vil det sikkert kunne være:

function testFil($fil){
  if(ereg("/[a-z\d-]+\.(gif|jpe?g|png)$/i", $fil)){
    return true;
  }
}
Avatar billede nielle Nybegynder
30. december 2008 - 12:39 #10
function testFil($fil){
    return preg_match("/^[a-z\d-]+\.(gif|jpe?g|png)$/i", $fil);
}
Avatar billede nielle Nybegynder
30. december 2008 - 12:40 #11
(glemte lige følgeteksten)

1) Brug preg-funktionerne i stedet for ereg-funktionerne. Det er der flere gode grunde til, men den bedste er nok at de sidstnævnte udfases med fremtidige PHP-versioner.

2) Der mangler et ’^’ i starten af mønsteret. Uden det vil der næsten kunne stå hvad som helst i det der forsøges matchet.

3) Jeg ville nok bare stryge brugen af en if-sætning i denne her sammenhæng og returnere resultatet direkte:
function testFil($fil){
    return preg_match("/^[a-z\d-]+\.(gif|jpe?g|png)$/i", $fil);
}
Avatar billede avminarm Juniormester
18. februar 2009 - 15:07 #12
ok - jeg fik det til at fungere - tak for hjælpen - smider i et par svar?
Avatar billede nielle Nybegynder
18. februar 2009 - 17:35 #13
Svar :)
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
Kurser inden for grundlæggende programmering

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