Avatar billede hamzter Nybegynder
01. oktober 2007 - 11:21 Der er 8 kommentarer og
1 løsning

funktion til at liste .doc-filer læser ikke danske bogstaver

Jeg bruger følgende php-kode til automatisk at liste dokumenter i en given mappe:

<?php
if(dirname($_SERVER["PHP_SELF"]) == "\\") {
$dir = "/";
}else{
$dir = dirname($_SERVER["PHP_SELF"]) ."/";
}

$sti = dirname($_SERVER["DOCUMENT_ROOT"] . $_SERVER["PHP_SELF"]) ."/";
$path = opendir($sti);

while (false !== ($files = readdir($path))) { // tjekker dir igennem

$ext = pathinfo($files); // finder filtype

if (@strtolower($ext["extension"]) == "doc") { // tjekker at det er en doc-fil
    echo"<a href=\"". $dir . $files ."\">". $files ."</a><br>\n";
    }
}
?>

Problemet er at dokumenter med æ, ø og å læses som †‘› - altså '‘'(æ),'›'(ø)og '†'(å). Dette laver så problemer med linket, da filnavnet ikke passer. Jeg har prøvet at tjekke httpd.conf i apache, samt leget lidt med meta-tags, uden noget resultat. Hvad kan man gøre?
Avatar billede hamzter Nybegynder
01. oktober 2007 - 13:14 #1
Kan det evt. have noget at gøre med at serveren hvor filerne ligger på, ikke har dansk sprog/tastatur?
Avatar billede hamzter Nybegynder
01. oktober 2007 - 15:55 #2
Jeg har nu fundet htmlentities navnene på de tre symboler, nemlig
"&dagger;" (å)
"&rsaquo;" (ø)
"&rsquo;"  (æ)

Er det evt. muligt at lave en "&dagger;" == "å" el.lign?
Avatar billede olebole Juniormester
01. oktober 2007 - 16:07 #3
<ole>

Løsningen er, at du ikke uploader - eller tillader andre at uploade - dokumenter med specialtegn i filnavnet. Det giver på et eller andet tidspunkt problemer af den ene eller anden slags. Du kan godt 'cowboy-hacke' dig ud af problemet denne gang - men det bliver efter al sandsynlighed ikke sidste gang  :)

/mvh
</bole>
Avatar billede hamzter Nybegynder
01. oktober 2007 - 16:20 #4
Det vil sige at der ikke er en "naturlig" løsning? For så må det vel bare være sådan det er.

Men cowboy-hacke? Har du noget i tankerne?
Avatar billede olebole Juniormester
01. oktober 2007 - 16:30 #5
Jo, den naturlige løsning er at bruge det tegnsæt, der er WWW's standardiserede tegnsæt - og derudover undgå specialtegn. Mere 'naturligt' kan det næsten ikke blive  :)

Du kan sikkert lave noget replace med:
    http://dk.php.net/manual/en/function.str-replace.php

- meeeeeeeeeen det er noget skidt. Du tramper på termometeret ... selvom du ikke kan se det, har patienten stadig 41,5 i feber
Avatar billede showsource Seniormester
01. oktober 2007 - 18:02 #6
Du kan prøve at bruge url_encode($files) i dit link.
Og bruger du så et php script til download, så bruge url_decode($_GET["filnavn"])
( fleste webservere gør det automatisk )

Men ellers som ole er inde på, tillad IKKE specialtegn for filnavne
Avatar billede showsource Seniormester
01. oktober 2007 - 18:03 #7
ups!
Og jeg ved ikke om det virker! :O)
Avatar billede hamzter Nybegynder
02. oktober 2007 - 09:07 #8
Okay, det lyder som om at jeg hellere må gøre det på den naturlige måde. Tak for hjælpen! Hvis i vil have point, så smid et svar. :)
Avatar billede hamzter Nybegynder
04. oktober 2007 - 11:21 #9
Jeg fandt en løsning.

$specialtegn = array('†', '‘', '›');
$danske_tegn = array('å', 'æ', 'ø');

$filer = str_replace($specialtegn, $danske_tegn, $files);

Der er dog stadig problemer med linket, så regner med helt at fjerne æøå.

Lukker her, og tak for hjælpen.
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