Gå til innhold

Problemer med ucfirst


Anbefalte innlegg

Skrevet (endret)

Jeg har en database der jeg vil at alle radene for en gitt kolonne (poststed) skal ha små botstaver og stor førstebokstav. Problemet er at ucfirst ikke skjønner hvordan den skal lage små bokstaver av ÆØÅ.

 

Her er den relevante delen av scriptet:

$query = "SELECT * FROM ad_postkode";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result))
{
$poststed = ucfirst(strtolower($row['poststed']));
$postnummer = $row['postnummer'];
$temp_query = "UPDATE ad_postkode SET poststed = '$poststed' WHERE postnummer = '$postnummer'";
mysql_query($temp_query);
}

 

Er det noen som har noen tips til hvordan jeg kan fikse dette?

 

Edit: både scriptet og databasen er lagret i UTF-8

Endret av G2Petter
Videoannonse
Annonse
Gjest Slettet-rXRozPkg
Skrevet

Du sier at ucfirst har problemer med å lage små bokstaver av ÆØÅ.

Dette er feil, siden det eneste denne funksjonen gjør er å ta en streng og konvertere den første bokstaven til stor bokstav. Det kan godt hende at ucfirst har problemer med å konvertere æøå til ÆØÅ, men det er ikke det du beskriver...

 

Slik jeg ser det her, er det er funksjonen strtolower som erproblemet.

Prøv å bruke denne istedenfor:

$poststed = ucfirst(mb_strtolower($row['poststed'],"UTF-8"));

 

Det er ikke sikkert mb_strtolower er tilgjengelig, da dette er en del av en utvidelse til PHP.

Ta en titt her for mer info: http://no.php.net/manual/en/ref.mbstring.php

Skrevet

Du har helt rett. Jeg skrev dette alt for sent i går, og tenkte meg tydeligvis ikke ordentlig om. mb_strtolower er tilgjengelig, men det er vel et problem med din løsning, i det at ucfirst ikke vil klare å konvertere de poststedene som begynner med æøå?

 

Jeg lette etter en funksjon som gjør det samme som ucfirst, men som håndterer multibyte, men jeg klarte ikke å finne det.

Skrevet (endret)
<?php
function firstUpper($string)
{
$string1 = str_replace(array("æ","ø","å"), array("Æ","Ø","Å"), strtoupper($string{0}));
$string2 = str_replace(array("Æ","Ø","Å"), array("æ","ø","å"), substr(strtolower($string), 1, strlen($string)));
return $string1.$string2;
}
?>

Endret av jokkakim

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...