Avatar billede mcardle Nybegynder
25. januar 2007 - 16:45 Der er 45 kommentarer og
1 løsning

Udskift special-tegn.

Hej Eksperter.

Jeg har lavet dette script i PHP, men det gør ikke helt som jeg vil, så jeg ville høre om man kunne lave noget ligende i JavaScrip.

Det den skal kunne er, at erstatte æ, ø og å med æ, ø, å, så det også vises i teksten.

Eks.

input:
Det ville glæde mig, at have en ø.

output:
Det ville glæde mig, at have en ø.

Det er lige meget om det er i et textarea, jeg vil bare gerne have, så det ender i en variabel.

// mcardle
Avatar billede mcardle Nybegynder
25. januar 2007 - 16:45 #1
Hov glemte mit script...:

<?php

if(!empty($_POST["prePost"])){
  $prePost = $_POST["prePost"];
 
  $prePost = str_replace("æ","&aelig;",$prePost);
  $prePost = str_replace("ø","&oslash;",$prePost);
  $prePost = str_replace("å","&aring;",$prePost);
 
  $output = $prePost;
}

?>
Avatar billede jensgram Nybegynder
25. januar 2007 - 17:29 #2
var str="Det ville glæde mig, at have en ø.";
str = str.replace(/ø/g,"&oslash;");
str = str.replace(/æ/g,"&aelig;");
str = str.replace(/å/g,"&aring;");

document.write(str);
Avatar billede mcardle Nybegynder
25. januar 2007 - 17:39 #3
Det virker stadig ikke.

http://www.mcardle-design.dk/projects/tools/replace_spc_chars/index.php

Her er koden:
<script type="text/javascript">
    function doText(){
    var str = document.getElementById("preText").innerHTML;
    str = str.replace(/ø/g,"&oslash;");
    str = str.replace(/æ/g,"&aelig;");
    str = str.replace(/å/g,"&aring;");
   
    document.getElementById("postText").innerHTML = str;
    }
</script>

<span>Ins&aelig;t din tekst.:</span><br />
<textarea id="preText"></textarea>
<br />
<br />
<span>Output.:</span><br />
<textarea id="postText"></textarea>
<br />
<input type="button" onclick="doText();" value="Replace" />
Avatar billede mcardle Nybegynder
25. januar 2007 - 17:40 #4
Den udskriver bare æ som æ osv.
Avatar billede coderdk Praktikant
25. januar 2007 - 17:46 #5
Prøv at udskifte

document.getElementById("postText").innerHTML = str;

med

alert(str);

Så kan du se om den er udskiftet ;)
Avatar billede mcardle Nybegynder
25. januar 2007 - 17:48 #6
Det er den ikke. Den formatere &aelig;, så den udskriver æ osv.
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:19 #7
Hmm - så skal du vel:

str = str.replace(/ø/g,"&amp;oslash;");
str = str.replace(/æ/g,"&amp;aelig;");
str = str.replace(/å/g,"&amp;aring;");
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:22 #8
Stadig det samme...
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:23 #9
Hvis den formatere &oslash; så formatere den vel også &amp;oslash;
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:24 #10
Så tror jeg ikke jeg forstår spm.
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:25 #11
Men udskiftning foregår jo kun én gang, så &amp;oslash; _ses_ som &oslash;
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:27 #12
Det jeg vil lave, er en udskift-funktion, så når jeg skriver æ, ø og å, så erstatter den det med &aelig;, &oslash; og &aring;
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:27 #13
F.eks. fra et textarea til et andet.
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:28 #14
Det gør førstnævnte jo også, men din browser fortolker det og _viser_ det som et æ, ø, å igen.
Avatar billede coderdk Praktikant
26. januar 2007 - 00:28 #15
Jeg forstår ikke hvorfor det ikke virker. I min IE7 og Firefox 2 virker dette:

    var t = "æøå";
    t = t.replace(/æ/g,"&aelig;").replace(/ø/g,"&oslash;").replace(/å/g,"&aring;");
    document.write(t);
    alert(t);

Den alerter &aelig;&oslash;&aring; og skriver skriver æøå i dokumentet (som i virkeligheden er &aelig;&oslash;&aring;)
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:29 #16
str = str.replace(/ø/g,"&amp;oslash;");
str = str.replace(/æ/g,"&amp;aelig;");
str = str.replace(/å/g,"&amp;aring;");

Vil gøre, at et ø fortolkes til &oslash; og vises som sådan - ikke som ø
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:32 #17
Den skal skrive det i documentet og ikke kun i en alert.
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:36 #18
Prøv at set dette script ind og så skal den gerne skrive f.eks. &aelig; i nummer to textarea:

<script type="text/javascript">
    function doText(){
        var t = document.getElementById("preText").innerHTML;
    t = t.replace(/æ/g,"&aelig;").replace(/ø/g,"&oslash;").replace(/å/g,"&aring;");
    document.getElementById("postText").innerHTML = t;
    }
</script>

<span>Ins&aelig;t din tekst.:</span><br />
<textarea id="preText"></textarea>
<br />
<br />
<span>Output.:</span><br />
<textarea id="postText"></textarea>
<br />
<input type="button" onclick="doText();" value="Replace" />
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:39 #19
<script type="text/javascript">
    function doText(){
        var t = document.getElementById("preText").innerHTML;
    t = t.replace(/æ/g,"&amp;aelig;").replace(/ø/g,"&amp;oslash;").replace(/å/g,"&amp;aring;");
    document.getElementById("postText").innerHTML = t;
    }
</script>

<span>Ins&aelig;t din tekst.:</span><br />
<textarea id="preText"></textarea>
<br />
<br />
<span>Output.:</span><br />
<textarea id="postText"></textarea>
<br />
<input type="button" onclick="doText();" value="Replace" />


Dét virker hos mig!
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:40 #20
Mærkelig... Ved du om det er noget server-opsætning der spiller ind... Det er min egen server.
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:42 #21
Du har bemærket mine ændringer?
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:43 #22
Nej, hvad har du lavet om?
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:44 #23
Jo.. &amp;
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:46 #24
Men det virker stadig ikke hos mig. Findes der ikke et sted, man kan slå &amp; til og fra og selvfølgelig alle de andre &et eller andet; i php.ini eller conf?
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:47 #25
http://files.jensgram.dk/public/exp.png - er det overhovedet hvad du ønsker?
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:48 #26
Præcis, hvad jeg ønsker...
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:48 #27
Ok - så kan jeg ikke hjælpe mere. Det er overstående kode.
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:49 #28
Okay... Tak for hjælpen... Smid et svar, så får du dine velfortjente points.
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:50 #29
Øh http://www.mcardle-design.dk/projects/tools/replace_spc_chars/index.php - hvis det er her du tester, har du så set i din kildekode?
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:51 #30
t = t.replace(/&#65533;/g,"&amp;aelig;").replace(/&#65533;/g,"&amp;oslash;").replace(/&#65533;/g,"&amp;aring;");

Bemærk ? - du skal sørge for at servere som iso-8859-1

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:51 #31
Ja, hvad nu?
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:52 #32
Måske kan man:

    <script type="text/javascript">
    function doText(){
        var t = document.getElementById("preText").innerHTML;
    t = t.replace(/&aelig;/g,"&amp;aelig;").replace(/&oslash;/g,"&amp;oslash;").replace(/&aring;/g,"&amp;aring;");
    document.getElementById("postText").innerHTML = t;
    }
</script>

<span>Ins&aelig;t din tekst.:</span><br />
<textarea id="preText"></textarea>
<br />
<br />
<span>Output.:</span><br />
<textarea id="postText"></textarea>
<br />
<input type="button" onclick="doText();" value="Replace" />


Men utestet.
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:54 #33
Kan stadig ikke få det til at virke... Prøver mig lidt frem endnu... Endnu engang, tak for hjælpen.
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:54 #34
Din server sender stadig som UTF-8. Der må være et sted i php.ini eller httpd.conf hvor det kan ændres.
Avatar billede jensgram Nybegynder
26. januar 2007 - 00:55 #35
Jep - held og lykke. Og god nat.
Avatar billede mcardle Nybegynder
26. januar 2007 - 00:56 #36
Jeps, skal det bare ændres til ovenstående charset?
Avatar billede jensgram Nybegynder
26. januar 2007 - 01:02 #37
Ja, iso-8859-1 indeholder æ, ø og å.
Avatar billede olebole Juniormester
26. januar 2007 - 14:59 #38
<ole>

Uanset tegnsæt, må man ikke anvende specieltegn som f.eks. æ, ø og å i java script:
    http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Literals#Using_Special_Characters_in_Strings

/mvh
</bole>
Avatar billede jensgram Nybegynder
26. januar 2007 - 15:05 #39
Ole -> Ok, skal man så sigte efter de to latin-1? \XXX, \xXX
Avatar billede jensgram Nybegynder
26. januar 2007 - 15:07 #40
æ = E6, ø = F8, å = E5, forresten
Avatar billede olebole Juniormester
26. januar 2007 - 15:13 #41
Du kan evt. bruge oktaltal-værdien for tallets keyCode ... f.eks: alert("\370")
Avatar billede jensgram Nybegynder
26. januar 2007 - 15:18 #42
Ok - det lader også til at HEX-værdierne virker:

\xE6 etc...
Avatar billede olebole Juniormester
26. januar 2007 - 15:20 #43
Yups ... du kan bruge begge  ;o)
Avatar billede mcardle Nybegynder
26. januar 2007 - 17:31 #44
Jeg fik ellers sat mit charset til iso-8859-1 og det virker nu, men hvis jeg bruger latin 1, kan jeg så godt skrive æøå. Jeg ved godt jeg burde bruge &aelig; og de andre, men kan man?
Avatar billede olebole Juniormester
29. januar 2007 - 15:07 #45
Nej, du kan ikke bruge HTML-entities som '&aelig;' i JavaScript. Du skal bruge enten hex- eller oktal-værdier
Avatar billede mcardle Nybegynder
29. januar 2007 - 16:57 #46
Okay, 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