Avatar billede mac10 Nybegynder
21. januar 2008 - 15:06 Der er 14 kommentarer og
1 løsning

Store bogstaver med PHP?

Hej derude.

Når jeg benytter følgende kode:

$navn = "peter";
echo utf8_encode(strtoupper($navn));

Resultat:
PETER

uden strtoupper:
peter

Men hvis navnet er åge så skriver den:
åGE

Den kan ikke skrive Æ, Ø og Å stort ud via STRTOUPPER. Hvad gør man som alternativ?
Avatar billede nielle Nybegynder
21. januar 2008 - 15:56 #1
Prøv at starte din kode med:

setlocale(LC_ALL, 'danish');
Avatar billede erikjacobsen Ekspert
21. januar 2008 - 15:57 #2
Eller
setlocale(LC_CTYPE, "da_DK");
Avatar billede erikjacobsen Ekspert
21. januar 2008 - 15:58 #3
Problemet er, at den ikke ved hvilke mystiske tegn (ikke A-Z), den skal gøre noget ved, når den ikke ved hvad det er for et sprog, der ligger til grund,
Avatar billede mac10 Nybegynder
21. januar 2008 - 16:23 #4
erikjakobsen
Ja ved godt den ikke helt forstår det, men troede man skulle definere det pr. bogstav.

Og til begge to. Ingen af løsningerne fungere - Hvis man skal sætte det i toppen af siden? :(
Avatar billede erikjacobsen Ekspert
21. januar 2008 - 18:38 #5
Øverst i dit PHP-script - og det forudsætter at det er installeret på serveren. Hvor kører det henne?
Avatar billede mac10 Nybegynder
21. januar 2008 - 19:46 #6
Det virkede ikke med øverst i scriptet.

Det kører på One.com hvor jeg altid bruger utf8_encode/decode for at udskrive danske bogstaver.
Avatar billede erikjacobsen Ekspert
21. januar 2008 - 19:52 #7
Du kan også øverst i dit php-script angive at du skal bruge iso-8859-1, hvis du hellere vil, men det er vel ikke problemet:

header("Content-Type: text/html;charset=iso-8859-1");

Jeg ved intet om one.com og om de understøtter en dansk locale. Men de angiver vist default utf-8.
Avatar billede 44fire44 Nybegynder
21. januar 2008 - 21:38 #8
<?php

$str = urldecode($navn["peter"]);
$str = strtoupper($str);
$change = array("æ", "ø", "å");
$change_to = array("Æ", "Ø", "Å");
$str = str_replace($change, $change_to, $str);
echo $str;
?>

virker perfekt for mig
Avatar billede 44fire44 Nybegynder
21. januar 2008 - 21:44 #9
hov - det gik lidt for hurtigt

<?php
$navn = "Åse Ølgæd";
$str = urldecode($navn);
$str = strtoupper($str);
$change = array("æ", "ø", "å");
$change_to = array("Æ", "Ø", "Å");
$str = str_replace($change, $change_to, $str);
echo $str;
?>

så virker det ;)
Avatar billede coderdk Praktikant
22. januar 2008 - 10:00 #10
Prøv:

setlocale(LC_ALL, 'danish', "da", "da_DK", "da_DK.iso8859-1");
$navn = "æbleøre åge";
echo utf8_encode(strtoupper($navn));
Avatar billede 44fire44 Nybegynder
24. januar 2008 - 21:30 #11
takker for points ;)
Avatar billede coderdk Praktikant
24. januar 2008 - 21:40 #12
Er nysgerrig: Virkede min ikke?
Avatar billede sorensen_123 Nybegynder
10. august 2009 - 18:31 #13
Undskyld jeg bumper tråden, men den ligger højt på Google ved søgningen, så tænkte at dette nok ville hjælpe andre.

Alt det med charset er at overdrive. Man kan bare bruge mb_strtoupper("string);. Altså mb_ foran.

Problemet er fikset i PHP 6, så der kan man bruge strtoupper som normalt.
Avatar billede uniquedk Nybegynder
26. august 2010 - 21:19 #14
Jeg har også rodet en del med dette, så synes lige jeg ville poste hvad jeg tror jeg har fundet er den ultimative løsning.... uafhængigt af set locale....

som på php side beskrevet

string mb_convert_case ( string $str , int $mode = MB_CASE_UPPER [, string $encoding = mb_internal_encoding() ] )

eks.
$str = mb_convert_case($str,MB_CASE_TITLE, 'UTF-8');

2. option kan være: MB_CASE_UPPER, MB_CASE_LOWER, or MB_CASE_TITLE

php's side ligger her
http://www.php.net/manual/en/function.mb-convert-case.php
Avatar billede gspiker Nybegynder
12. juni 2014 - 21:54 #15
Brug mb_strtoupper() med 'UTF-8'

<?php
  $str = 'æøå';
  echo mb_strtoupper($str, 'UTF-8'); // ÆØÅ
?>
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