/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
ucwords,strtolower, utf8
Fra : Leif Neland


Dato : 07-07-08 15:52

Hvorledes får man ucwords til at fungere med utf8?

Apache2/php på Debian:

setlocale -a indeholder da_DK.utf8

(Siden er redigeret i utf8)

<? header("Content-Type: text/html; charset=utf-8");?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

<?
echo setlocale(LC_ALL,"da_DK.utf8");
echo "<br>";
$str="FANØ ÆBLER OG ÅL";
echo strtolower($str);
echo "<br>";
echo ucwords($str);
echo "<br>";
echo ucwords(strtolower($str));
?>

Men ÆØÅ er altid uppercase:
da_DK.utf8

fanØ Æbler og Ål
FANØ ÆBLER OG ÅL
FanØ Æbler Og Ål

End ikke den desperate version:
utf8_encode(ucwords(strtolower(utf8_decode($str)))); giver det ønskede
resultat.

Så hvad fungerer så? Skal jeg ligefrem til at lave det selv med replace?

Leif






 
 
Johan Holst Nielsen (08-07-2008)
Kommentar
Fra : Johan Holst Nielsen


Dato : 08-07-08 07:56

Leif Neland wrote:
> Hvorledes får man ucwords til at fungere med utf8?
>
> Apache2/php på Debian:
>
> setlocale -a indeholder da_DK.utf8
>
> (Siden er redigeret i utf8)
>
> <? header("Content-Type: text/html; charset=utf-8");?>
>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
> "http://www.w3.org/TR/html4/strict.dtd">
>
> <?
> echo setlocale(LC_ALL,"da_DK.utf8");
> echo "<br>";
> $str="FANØ ÆBLER OG ÅL";
> echo strtolower($str);
> echo "<br>";
> echo ucwords($str);
> echo "<br>";
> echo ucwords(strtolower($str));
> ?>
>
> Men ÆØÅ er altid uppercase:
> da_DK.utf8
>
> fanØ Æbler og Ål
> FANØ ÆBLER OG ÅL
> FanØ Æbler Og Ål
>
> End ikke den desperate version:
> utf8_encode(ucwords(strtolower(utf8_decode($str)))); giver det ønskede
> resultat.
>
> Så hvad fungerer så? Skal jeg ligefrem til at lave det selv med replace?

Prøv at tilføje følgende inden konverteringen
setlocale(LC_CTYPE,'da_DK.utf8');

Alternativt årøv evt. med mb_strtolower....


--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Leif Neland (08-07-2008)
Kommentar
Fra : Leif Neland


Dato : 08-07-08 09:48

>Leif Neland wrote:
>> Hvorledes får man ucwords til at fungere med utf8?
>>
>> echo setlocale(LC_ALL,"da_DK.utf8");
>> echo "<br>";
>>
>> Men ÆØÅ er altid uppercase:
>> da_DK.utf8
>>
>> fanØ Æbler og Ål
>> FANØ ÆBLER OG ÅL
>> FanØ Æbler Og Ål
>>
>> End ikke den desperate version:
>> utf8_encode(ucwords(strtolower(utf8_decode($str)))); giver det ønskede
>> resultat.
>>
>> Så hvad fungerer så? Skal jeg ligefrem til at lave det selv med replace?

>Prøv at tilføje følgende inden konverteringen
>setlocale(LC_CTYPE,'da_DK.utf8');

Burde være det samme som setlocale(LC_ALL,"da_DK.utf8");

> Alternativt årøv evt. med mb_strtolower....

Giver "fan?s?e og b?" (Hvis det overhovedet kommer igennem news)

Prøvede også mb_convert_case($str,MB_CASE_TITLE,"da_DK.utf8");

Det giver
Warning: mb_convert_case() [function.mb-convert-case]: Illegal character
encoding specified in posthuse.php on line 27

Warning: mb_convert_case() [function.mb-convert-case]: Unknown encoding
"da_DK.utf8" in posthuse.php on line 27

Selvom da_DK.utf8 er med i locale -a.
Så er da_DK.utf8 åbenbart ikke kendt for mb_ funktionerne.

Prøvede også
function myucwords($str) {
return
ucwords(str_replace(array("Æ","Ø","Å"),array("æ","ø","å"),strtolower($str)));
};
Men det laver jo også æøå med småt i begyndelsen af ord.
Suk...




--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk



Dan Storm (08-07-2008)
Kommentar
Fra : Dan Storm


Dato : 08-07-08 10:03

Leif Neland skrev:
> Hvorledes får man ucwords til at fungere med utf8?

Her er et alternativ:
<url: http://dk2.php.net/manual/en/function.ucwords.php#68707>

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Leif Neland (08-07-2008)
Kommentar
Fra : Leif Neland


Dato : 08-07-08 10:15


"Leif Neland" <leif@neland.dk> skrev i en meddelelse
news:48722da6$0$56780$edfadb0f@dtext02.news.tele.dk...
> Hvorledes får man ucwords til at fungere med utf8?

mb_convert_case($str,MB_CASE_TITLE,"utf8");

Leif



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste