Avatar billede apromis Praktikant
02. august 2010 - 11:14 Der er 6 kommentarer og
1 løsning

æøå fejler meget

Hej alle.

Jeg bruger denne her til at fjerne ulovlige tegn :
$bad = "\'*^¥`+}{][£!ßΩ%§#=®·‡„‚‚ÁÈËÍÎÏÌÓÔÒÚÛÙıˆ˘˙˚¸˝ˇ?";
for($i = 0; $i < strlen($bad); $i++) {
$var = str_replace($bad[$i], "", $var);
}

$replace = array("Ê" => "ae", "¯" => "oe", "Â" => "aa", "&#8710;" => "Ae", "ÿ" => "Oe", "&#8776;" => "AA", " " => "_");
while(list($key, $value) = each($replace)) {
$var = str_replace($key, $value, $var);
}

Som er inde i en funktion.
Men æøå er ikke med i denne her, og når jeg taster æ, ø eller å kommer der et mærkeligt tegn i stedet.
Har prøvet at udvide ovenstående med :
$replace = array("å" => "aa", "ø" => "oe", "æ" => "oe");
og ligeledes med store ÆÅØ, men det virker stadig ikke for mig.
Min start html ser således ud :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>index</title>

Hvad kan der være galt ?

På forhånd tak :)
Avatar billede repox Seniormester
02. august 2010 - 11:16 #1
omg??
Er det ikke nemmere at lige at fortælle hvad der er lovlige tegn? Hold da op, noget rod...
Avatar billede apromis Praktikant
02. august 2010 - 11:19 #2
Hvorfor vil det være nemmere ?
Idéen er den fjerner alt som er ulovligt så brugeren ikke skal til at fjerne eller ændre é til e f.eks.

Eller har du en nemmere løsning ?
Avatar billede repox Seniormester
02. august 2010 - 11:33 #3
Din løsning er upraktisk fordi du har en kollosal mængde data du prøver at forholde dig til - lad være med det og fortæl istedet hvad du synes er lovlige tegn:
preg_replace("/[^0-9a-zA-Z]+/i", "", $foo);


Ganske simpelt fjernes tegn der ikke er 0-9 eller a-Z og erstattes med ingenting.

Jeg antager at det er noget pretty URL halløj?
Personligt ville jeg nok foretrække noget ala:
$string = "?ÅÆØø æåèÈ";
$foo = iconv("ISO-8859-1", "ASCII//TRANSLIT//IGNORE", $string);
echo preg_replace("/[^0-9a-zA-Z]+/i", "-", $foo);
Avatar billede apromis Praktikant
02. august 2010 - 11:44 #4
Det giver god mening.
Dog virker det ikke for mig, da resultat bliver :
 -
jf. http://web82.enux.dk/madsen/tegn.php

Den skal også bytte æøå til hhv. ae oe og aa. Det gør din kode da ikke ?

Min kode er :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>index</title>
</head>
<?php
$string = "?ÅÆØø æåèÈ";
$foo = iconv("ISO-8859-1", "ASCII//TRANSLIT//IGNORE", $string);
echo preg_replace("/[^0-9a-zA-Z]+/i", "-", $foo);

          ?>
</html>
Avatar billede repox Seniormester
02. august 2010 - 12:07 #5
Der er flere ting i vejen med det der...
Din server serverer siden i ISO-88591-1, i din HTML angiver du at du vil vise siden i UTF-8 og slutteligt ser du tegnene '' fordi din fil er prepended med UTF-8 BOM (hvilket skyldes din editor).
Det er faktisk ikke indholdet i $string der bliver oversat til '' - men tegnene i $string kan ikke gemmes i UTF-8 og forventes vist i ISO-8859-1.

Få styr på det og så prøv igen.

Hvis det er meningen du vil vise dine data i UTF-8 skal du også tænke lidt selv og kigge på koden jeg har skrevet og forstå hvad der sker.
$foo = iconv("ISO-8859-1", "ASCII//TRANSLIT//IGNORE", $string);
skal ændres til
$foo = iconv("UTF-8", "ASCII//TRANSLIT//IGNORE", $string);

- hvilket du i øvrigt hurtigt ville kunne have læst dig til hvis du havde slået iconv() op på php.net
Avatar billede apromis Praktikant
02. august 2010 - 12:22 #6
Det sku super.
Det giver egentlig god mening hvad du siger, har jeg ikke lige tænkt over i koger.

Tak for hjælpen. Smid et svar :)
Avatar billede repox Seniormester
02. august 2010 - 13:14 #7
Det fik du her.
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