Avatar billede m_bold Praktikant
05. oktober 2005 - 17:00 Der er 16 kommentarer og
1 løsning

fjern specielle tegn fra navn på billede

Jeg har lavet et upload-script, som desværre ikke rigtig kan håndtere mærkelige filnavne, som indeholder #, + , æ, ø, å osv.

Navnet kommer fint i databasen, og billedet uploades fint (med det rigtige navn) men når billedet skal vises, kommer der bare et rødt kryds. Hvad kan man gøre for at imødekomme dette?
Avatar billede Slettet bruger
05. oktober 2005 - 17:05 #1
du kan jo enten bruge www.php.net/str_replace, ellers må du lige smide din upload funktion.
Avatar billede coderdk Praktikant
05. oktober 2005 - 17:26 #2
Hvad skal du også bruge navnet til? Du kan da bare give det den ID som det har i databasen? :)
Avatar billede coderdk Praktikant
05. oktober 2005 - 17:26 #3
*Eventuelt* beholde det oprindelige navn som "visningsnavn" under billedet eller lignende ;)
Avatar billede m_bold Praktikant
05. oktober 2005 - 18:47 #4
gandso --> jeg har prøvet med str_replace, men kan ikke rigtig få det til at virke på $_FILES['filnavn']['name']:

$navnpre = $_FILES['filnavn']['name'];
$ugyldige = array("æ", "ø", "å", "#", "%", "+");
$navn = str_replace($ugyldige, "", $navnpre);
echo $navn;


coderdk --> Det skal bruges til et CMS, så det er mest tjekket, hvis brugeren har et specifikt navn at gå efter, når han vælger billede. Derfor er navnet vigtigt.
Avatar billede m_bold Praktikant
05. oktober 2005 - 20:17 #5
gandso --> jeg har fået det til at virke nu. Det var bare mig, der var dum. Smid et svar, så er der points.
Avatar billede Slettet bruger
05. oktober 2005 - 20:26 #6
:)
Avatar billede Slettet bruger
05. oktober 2005 - 20:27 #7
Jeg tror det er bedre hvis du bare fjerne alle tegn der ikke er tal og bogstaver, da du med stor sandsynlighed heller ikke er glad for f.eks. "\" og "†" i dit filnavn.

$navn = preg_replace("/[^a-zA-Z0-9]/", "", $navnpre);
Avatar billede m_bold Praktikant
05. oktober 2005 - 21:07 #8
wicez --> hvad så, hvis man har en '-' i navnet. Vil den så også fjerne den?
Avatar billede Slettet bruger
05. oktober 2005 - 22:12 #9
Ja det vil den, men det kan du så tilføje ved (_ også tilføjet):

$navn = preg_replace("/[^a-zA-Z0-9-_]/", "", $navnpre);
Avatar billede karmicmind Nybegynder
06. oktober 2005 - 10:09 #10
Avatar billede karmicmind Nybegynder
06. oktober 2005 - 10:12 #11
Det fjerne ganske vist ikke de specielle tegn, men det gør at du ka bruge dem i dine links alligevel..
Avatar billede Slettet bruger
06. oktober 2005 - 17:17 #12
så kan du ligeså godt bruge htmlentities e.l.
Avatar billede showsource Seniormester
06. oktober 2005 - 18:11 #13
Kan også gøre det:

function badchar($var) { // Fjerner "bad" tegn i filnavn

$bad = "\\\"'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,\$";

    for($i = 0; $i < strlen($bad); $i++) {
    $var = str_replace($bad[$i], "", $var);
    }

$replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø" => "Oe", "Å" => "AA", " " => "_");

    foreach($replace as $key => $value) {
    $var = str_replace($key, $value, $var);
    }

return $var;
}

$fil = "æblegrød med FlØde";

echo badchar($fil);
Avatar billede Slettet bruger
06. oktober 2005 - 18:44 #14
Tjah, der er med stor sandsynlighed mange tegn der er "dårlige", hvilket gør det umuligt for dig at beslutte hvilke tegn du ikke tillader, og giver dig den ene mulighed at definere de tegn, brugeren skal have tilladelse til at give filerne.
Avatar billede m_bold Praktikant
06. oktober 2005 - 18:49 #15
Jeg har ikke lige haft den store tid til at sammenligne funktionerne, men jeg vil gøre det snarest. Umiddelbart virker gandso's løsning fint, men jeg vil gerne lige afprøve wicez' også, da den ser ud til at være lidt mere elegant.
Avatar billede m_bold Praktikant
07. oktober 2005 - 10:13 #16
Jeg har nu prøvet de to funktioner, og tror jeg bruger wicez' forslag, men er endnu ikke helt sikker. Jeg synes stadig de to funktioner minder meget om hinanden. Og hvis man stiller dem op på den rigtige måde, har jeg indtrykket af, at de har præcis den samme effekt.

wicez --> vil du smide et svar, så deler I to points'ene...
Avatar billede Slettet bruger
07. oktober 2005 - 15:49 #17
De har ikke samme effekt. Min vil kun tillade de valgte tegn, mens Gandso's godtager alle tegn, undtagen dem i $ugyldige..

Bare giv Gandso alle point, han var jo først om et brugbart svar ;o)
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