Avatar billede superbent Nybegynder
28. januar 2008 - 15:53 Der er 5 kommentarer og
1 løsning

Hvorfor virker str_replace() ikke med de danske tegn?

Hejsa,

Kan nogen hjælpe mig med at benytte:

$link = "En lille æ og ø og å test";
$link = str_replace('æ','ae',$link);
$link = str_replace('ø','oe',$link);
$link = str_replace('å','a',$link);
echo $link;

Den virker fint med at skifte andre tegn ud, såsom %20, ", !, #, (, ) og mange andre.

Så tænkte jeg på f.eks. at benytte i stedet for at den leder efter "æ" men så efter "%E6" eller æøå's character nummer, hvilket heller ikke ser ud til at virke.

Nogen der har en idé til hvad jeg gør galt?

På forhånd tak
Avatar billede michael_stim Ekspert
28. januar 2008 - 16:04 #1
$link = "En lille æ og ø og å test";

$str_repl_fra=array("æ","ø","å");
$str_repl_til=array("ae","oe","aa");
$udskrift=str_replace($str_repl_fra, $str_repl_til, $link);
echo $udskrift;
Avatar billede olebole Juniormester
28. januar 2008 - 20:46 #2
<ole>

Det virker, somom du roder forskellige tegnsæt sammen. Var det ikke bedre at nøjes med at bruge ét og helt slippe for den slags oversættelser?  :)

/mvh
</bole>
Avatar billede kjeldsted Novice
28. januar 2008 - 20:55 #3
Hvis bare du sørger for at alle dine side bruger iso-8859-1 som charset burde problemet ikke opstå. Du skal bare bruge følgende kode i headtaget:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Avatar billede olebole Juniormester
28. januar 2008 - 21:39 #4
Nej, det er ikke nok at bruge en meta - og desuden er utf-8 langt at foretrække, da det giver mulighed for at udveksle data med hele verden.

Derudover er utf-8 default tegnsæt for både XML og Flash/ActionScript.

Sidst, men ikke mindst er iso-8859-1 defacto deprecated i JavaScript, idet de gamle ANSI baserede funktioner escape og unescape er udskiftet med de Unicode baserede encodeURI, encodeURIComponent, decodeURI og decodeURIComponent.

Det kræver, at:
1) du bruger en utf-8 meta
2) du gemmer dine PHP-dokumenter som utf-8
3) du sætter utf-8 kollationer på dine database tabeller
4) du sikrer dig, at din server sender dokumenterne som utf-8

Er du i tvivl om nr. 4, så tjek her: http://validator.w3.org/#validate_by_uri+with_options - husk at sætte flueben i 'Verbose Output'. Serves dokumentet med forkert tegnsæt - og du ikke har admin adgang til serveren - skriver du dette i toppen af dit PHP-dokument:
    Header("Content-Type: text/html; charset=utf-8");

Hvis du insisterer på at bruge iso-8859-1, følger du de samme fire regler - bare med iso-8859-1 i stedet for utf-8. I punkt 2 gemmer du dokumentet som ANSI. I længden vil dette dog utvilsomt give dig problemer  ;o)
Avatar billede superbent Nybegynder
29. januar 2008 - 21:36 #5
olebole:

1.
Jeg bruger:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

2.
De gemmes som ansi - prøver som utf-8.

3.
utf-8 kollationer... hvordan gøres dette lige?

4.
Jeg har testet som du nævner, og jeg får en 100% XHTML god side, ingen fejl, og siger:
Encoding:      utf-8


Spm. 1:
Hvis nu man gemmer sit dokument som ansi, som mit program (phpedit) gør som standard - kan man så ikke bare skrive den header med utf-8 i en fil og include generelt i stedet for at være sikker på alle siderne virker ordenligt?

Spm. 2:
En anden ting, så troede jeg ikke at filtypen som mine funktioner var i, ændrede direkte i mine funktioner :) men godt altid at blive klogere.
Er der andre generelle tidspunkter hvor man opdager fejl, som jeg har gjort nu, med æøå, bare med andre ting man normalt laver fejl ved, som er pga. utf-8 som jeg burde vide, så jeg lige kan lave hurtigere fejlsøgning på det i fremtiden?

Spm. 3:
Men jeg prøvede lige at gemme min funktionsfil som "utf" og det ser ud til at virke fint nok (har også mulighed for "utf-8 with byte order mark" og "utf-16 little endian" og "utf-16 little endian"
Hvad er forskellen?


Mange tak for hjælpen, giv lige et svar olebole, og tak for jer andre der prøvede at hjælpe.
Avatar billede superbent Nybegynder
23. oktober 2008 - 20:52 #6
lukker
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