Avatar billede Slettet bruger
25. april 2009 - 19:24 Der er 8 kommentarer og
1 løsning

Omdøbe fil ved upload php.

Hej alle

Jeg har fundet lidt script her og der som hjælper mig med at uploade filer vha. php.
Jeg ligger filnavnene op i en MySQL database, så ledes jeg kan bruge disse til at linke med.
Problemet er bare at linkene ikke virker med Æ, Ø eller Å.

Spørgsmålet er så, hvordan får jeg mit upload til at erstatte:
æ med ae?
ø med o?
å med aa?

Således dette ikke går galt. Nedenunder ses mit upload kode.

<?php

$kategori=$_POST['kategori'];
$beskrivelse=$_POST['beskrivelse'];

// Your file name you are uploading
$file_name = $HTTP_POST_FILES['ufile']['name'];

// random 4 digit to add to our file name
// some people use date and time in stead of random digit
$random_digit=rand(0000,9999);

//combine random digit to you file name to create new file name
//use dot (.) to combile these two variables

$new_file_name=$random_digit.$file_name;

//set where you want to store files
//in this example we keep file in folder upload
//$new_file_name = new upload file name
//for example upload file name cartoon.gif . $path will be upload/cartoon.gif

$skiller = "/";

$path= $kategori.$skiller.$new_file_name;
if($ufile !=none)
{
if(copy($HTTP_POST_FILES['ufile']['tmp_name'], $path))
{


echo "<br>Dokumentet blev uploadet<BR/>";

require("config7.php");

$sql="INSERT INTO dokumenter(beskrivelse, kategori, fil)VALUES('$beskrivelse', '$kategori', '$new_file_name')";

$result=mysql_query($sql);

mysql_close();


}
else
{
echo "<br>Der skete en fejl prøv igen.";
}
}
?>
Avatar billede arne_v Ekspert
25. april 2009 - 20:06 #1
$new_file_name = str_replace('æ', 'ae', str_replace('ø', 'oe', str_replace('å', 'aa', $new_file_name)));

er ikke super elegant, men kan vel bruges.
Avatar billede moddi100 Seniormester
25. april 2009 - 20:49 #2
Brug følgende:

$new_file_name = preg_replace(array("/æ/i","/ø/i","/å/i"), array("ae", "oe", "aa"), $random_digit.$file_name);

i stedet for

$new_file_name=$random_digit.$file_name;
Avatar billede moddi100 Seniormester
25. april 2009 - 20:49 #3
Hov, havde ikke lige set den var besvaret :)
Avatar billede mstorgaard Praktikant
25. april 2009 - 22:07 #4
arne_v; man kan vel gøre det kortere ved at sige:
$new_file_name = str_replace(array('æ','ø','å'),array('ae','oe','aa'),$new_file_name);

moddi100; jeg ville anbefale af rykke $random_digit ud foran din preg_replace, da det jo er unødvendigt at erstatte æ, ø og å i en variabel, der kun indeholder 4 tal.
Avatar billede arne_v Ekspert
26. april 2009 - 01:20 #5
Jeps.
Avatar billede moddi100 Seniormester
26. april 2009 - 13:03 #6
mstorgaard: Det er selvfølgelig rigtigt nok. Men om du skriver det inde i funktionen eller foran vil i dette tilfælde nok ikke gøre den store tidsmæssige forskel.
Avatar billede arne_v Ekspert
05. juli 2009 - 19:33 #7
anders ?
Avatar billede Slettet bruger
12. august 2009 - 10:08 #8
arne_v angiv lige svar så du kan få dine point!!
Avatar billede arne_v Ekspert
12. august 2009 - 15:06 #9
svar

(#4 er nok lidt elegantere)
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