Avatar billede kwanstudios Nybegynder
22. marts 2006 - 12:17 Der er 12 kommentarer og
2 løsninger

Ø til oe, osv.

Jeg benytter mig af Open Source systemet Wordpress til min blog. Den generer nogle pæne permalinks til mine indlæg, men tager desværre danske bogstaver med. Det er ikke så smart i en url. Derfor vil jeg gerne erstate dem med de normale erstatninger, altså ø til oe, æ til ae og å til aa.

Jeg har fundet et plugin som kan oversætte det til urlencode. Men det ser heller ikke helt smart ud, så bliver bogstaverne til e45 f.eks.

Det ser sådan ud:

function sanitize_title_with_urlencode($title) {
    $title = urlencode($title);
    $title = strtolower($title);
    $title = preg_replace('/&.+?;/', '', $title); // kill entities
    $title = preg_replace('/\s+/', '_', $title);
    $title = str_replace('+', '_', $title);
    $title = str_replace('%', '', $title);
    $title = preg_replace('/[^a-z0-9 _-]/', '', $title);
    $title = preg_replace('|_+|', '_', $title);
    return $title;
}

remove_action('sanitize_title', 'sanitize_title_with_dashes');
add_action('sanitize_title', 'sanitize_title_with_urlencode');

Er det muligt (selvfølgelig er det dét), at erstatte de ovenstående tre danske bogstaver med en lignende metode?
Avatar billede gizmo-gizmo Nybegynder
22. marts 2006 - 12:37 #1
Det er vel bare:

function fjern_grimme_danske_tegn($str)
{
  $str = str_replace("ø", "oe", $str);
  $str = str_replace("æ", "ae", $str);
  $str = str_replace("å", "aa", $str);

  return $str;
}
Avatar billede Slettet bruger
22. marts 2006 - 14:32 #2
function fjern_grimme_danske_tegn($str)
{
$danske = array('æ', 'Æ', 'ø', 'Ø', 'å', 'Å');
$andre  = array('ae', 'AE', 'oe', 'OE', 'aa', 'AA');
$str = str_replace($danske, $andre, $str);
return $str;
}

Du skal også tage højde for store og små bogstaver.. ellers skal du lave noget:

function fjern_grimme_danske_tegn($str)
{
  $str = str_ireplace("ø", "oe", $str);
  $str = str_ireplace("æ", "ae", $str);
  $str = str_ireplace("å", "aa", $str);

  return $str;
}
Avatar billede Slettet bruger
22. marts 2006 - 14:33 #3
Men hvis du bruger den underste version får du problemer med at konvertere tilbage
Avatar billede jakobdo Ekspert
22. marts 2006 - 15:44 #4
Hvad med at se på strtr()

function removeaccents($string)
{
return strtr($string, "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ", "SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
}
Avatar billede kwanstudios Nybegynder
22. marts 2006 - 22:12 #5
Intet af det virker tilsyneladende ordentligt, jeg tænkte at det sikkert var fordi Wordpress kører UTF-8 i alt. Jeg konverterede derfor filen til UTF-8 og ganske rigtigt, så virkede det. Men nu får jeg fejlmeddelelser op overalt i selve administrationen af Wordpress, noget ala det her: Warning: Cannot modify header information - headers already sent by (output started at /FJERNET-STI/blog/wp-content/plugins/encodedpermalinks.php:1)

Den fejl får jeg ikke når den ikke er konverteret til UTF-8. Har I nogle løsnngsforslag?
Avatar billede jakobdo Ekspert
23. marts 2006 - 07:45 #6
Den fejl betyder jo i bund og grund at der allerede er sendt noget output til browseren inden header() bliver skudt af.
Avatar billede Slettet bruger
23. marts 2006 - 08:52 #7
Den fejl har intet med konvertionen til andre bogstaver at gøre - med mindre, naturligvis, at denne oversættelse tvinger php til at vise en fejl.
Avatar billede kwanstudios Nybegynder
31. marts 2006 - 00:09 #8
Jeg er ret sikker på at den tvinger den til fejlen. Er der evt. en måde at illustrere et ø overfor php på som ikke er direkte et ø? Jeg tænker på ligesom man laver & oslash ; i html?
Avatar billede jakobdo Ekspert
31. marts 2006 - 10:39 #9
Du kan bruge html_entity()
Avatar billede Slettet bruger
31. marts 2006 - 11:18 #10
Avatar billede kwanstudios Nybegynder
30. oktober 2006 - 15:44 #11
Dem der ønsker point bør smide et svar :-)
Avatar billede jakobdo Ekspert
30. oktober 2006 - 15:49 #12
Svar!
Avatar billede Slettet bruger
30. oktober 2006 - 16:27 #13
Ellers tak ;o)
Avatar billede jakobdo Ekspert
18. december 2006 - 07:52 #14
Takker for point.
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