Kom ihåg mig?
Home Menu

Menu


ÅÄÖ i PHP

Ämnesverktyg Visningsalternativ
Oläst 2007-03-04, 14:47 #1
klein klein är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2005
Inlägg: 2 225
klein klein är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2005
Inlägg: 2 225
Någon som har en strtolower variant som även klara ÅÄÖ på ett korrektsätt?
klein är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-04, 15:08 #2
thorsells avatar
thorsell thorsell är inte uppkopplad
Medlem
 
Reg.datum: Feb 2004
Inlägg: 295
thorsell thorsell är inte uppkopplad
Medlem
thorsells avatar
 
Reg.datum: Feb 2004
Inlägg: 295
Jajamensan, har även lite andra alternativ till den funktionen:

Kod:
<?php
define( "UC_CHARS", "ĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕ֌؊ŲÚÛÜŨŽŪ" ); // If you need more, add
define( "LC_CHARS", "āáâãäåæįčéęëėíîīđņōķôõöœøšųúûüũžū" ); // If you need more, add
define( "WORD_SEPARATORS", chr(9).chr(10).chr(11).chr(12).chr(13).chr(32) );

function strtolower2($value) {
 return (
  strtolower(
   strtr( $value, UC_CHARS, LC_CHARS )
  )
 );
}

function strtoupper2($value) {
 return (
  strtoupper(
   strtr( $value, LC_CHARS, UC_CHARS )
  )
 );
}

function ucfirst2($value) {
 return (
  strtoupper2(
   substr( $value, 0, 1 )
  ).strtolower2(
   substr( $value, 1, strlen( $value ) )
  )
 );
}

function ucwords2( $value ) {
 $upper = strtoupper2( $value );
 $value = ucfirst2( $value );
 $word_separators = WORD_SEPARATORS;
 $len = strlen( $value ) - 1;
 for ( $i = 0; $i < strlen( $word_separators ); $i++ ) {
  $separator = $word_separators[$i];
  $pos = -1;
  while ( $pos !== false ) {
   $pos = strpos( $value, $separator, ( $pos + 1 ) );
   if ( ( $pos !== false ) && ( $pos < $len ) ) {
    $value[ ( $pos + 1 ) ] = $upper[ ( $pos + 1 ) ];
   }
  }
 }
 return ($value);
}
?>
thorsell är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-04, 17:07 #3
Crotalus Crotalus är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2004
Inlägg: 40
Crotalus Crotalus är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2004
Inlägg: 40
Behövs ingen specialversion för att få strtolower att klara åäö, se bara till sätta rätt locale med setlocale().

Typ:
setlocale(LC_ALL, 'sv_SE');
$str = "ÅÄÖ";
print strtolower($str);
Crotalus är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-05, 07:03 #4
koalas avatar
koala koala är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Sep 2004
Inlägg: 1 154
koala koala är inte uppkopplad
Har WN som tidsfördriv
koalas avatar
 
Reg.datum: Sep 2004
Inlägg: 1 154
Det kan hända att det rör sig om UTF-8, titta i så fall på mb_*
koala är inte uppkopplad   Svara med citatSvara med citat
Oläst 2007-03-05, 19:36 #5
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
Citat:
Originally posted by thorsell@Mar 4 2007, 16:08
Jajamensan, har även lite andra alternativ till den funktionen:

Kod:
<?php
define( "UC_CHARS", "ĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕ֌؊ŲÚÛÜŨŽŪ" ); // If you need more, add
define( "LC_CHARS", "āáâãäåæįčéęëėíîīđņōķôõöœøšųúûüũžū" ); // If you need more, add
define( "WORD_SEPARATORS", chr(9).chr(10).chr(11).chr(12).chr(13).chr(32) );

function strtolower2($value) {
 *return (
 * strtolower(
 * * strtr( $value, UC_CHARS, LC_CHARS )
 * )
 *);
}

function strtoupper2($value) {
 *return (
 * strtoupper(
 * * strtr( $value, LC_CHARS, UC_CHARS )
 * )
 *);
}

function ucfirst2($value) {
 *return (
 * strtoupper2(
 * * substr( $value, 0, 1 )
 * ).strtolower2(
 * * substr( $value, 1, strlen( $value ) )
 * )
 *);
}

function ucwords2( $value ) {
 *$upper = strtoupper2( $value );
 *$value = ucfirst2( $value );
 *$word_separators = WORD_SEPARATORS;
 *$len = strlen( $value ) - 1;
 *for ( $i = 0; $i < strlen( $word_separators ); $i++ ) {
 * $separator = $word_separators[$i];
 * $pos = -1;
 * while ( $pos !== false ) {
 * * $pos = strpos( $value, $separator, ( $pos + 1 ) );
 * * if ( ( $pos !== false ) && ( $pos < $len ) ) {
 * * * $value[ ( $pos + 1 ) ] = $upper[ ( $pos + 1 ) ];
 * * }
 * }
 *}
 *return ($value);
}
?>
Suck! mb_convert_case() exempelvis har funnits i evigheter.

Dags att börja använda kanske. (UCS-4, UCS-4BE, UCS-4LE, UCS-2, UCS-2BE, UCS-2LE, UTF-32, UTF-32BE, UTF-32LE, UTF-16, UTF-16BE, UTF-16LE, UTF-7, UTF7-IMAP, UTF-8, ASCII, EUC-JP, SJIS, eucJP-win, SJIS-win, ISO-2022-JP, JIS, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-13, ISO-8859-14, ISO-8859-15, byte2be, byte2le, byte4be, byte4le, BASE64, HTML-ENTITIES, 7bit, 8bit, EUC-CN, CP936, HZ, EUC-TW, CP950, BIG-5, EUC-KR, UHC (CP949), ISO-2022-KR, Windows-1251 (CP1251), Windows-1252 (CP1252), CP866 (IBM866), KOI8-R stöds om man nu envisas med att inte använda utf-8)
martine är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 03:58.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017