Visa ett inlägg
Oläst 2006-08-21, 21:30 #5
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
Ett tips är att det finns en extension: multibyte, som klarar av att göra t ex preg_match på åäö om dessa är kodade i utf-8. Har börjat hata det faktum att jag numera programmerar i UTF-8 i editorn, och sparar texter som utf-8 i databasen, vilket ger upphov till diverse problem här och var i de inbyggda funktionerna, när man har åäö i texten.

Har något ett bättre förslag på hur följande kod kan skrivas under omständigheterna? (mb_split finns inte installerat)

Koden tar ut de ord som förekommer i strängen $phrase, och returnerar dem som array.

Kod:
$phrase = utf8_decode($phrase); 
 
/**
* Det vore bättre att använda multibyte extension (ej installerad som standard).
* 	mb_internal_encoding('UTF-8');
* mb_regex_encoding('UTF-8');
* //setlocale(LC_ALL, 'sv_SE');
* 	mb_split(...);
*/

$words = preg_split('/[^a-z0-9\-?????????????]+/', strtolower($phrase), -1, PREG_SPLIT_NO_EMPTY); 
 
// Vi vill ha tillbaka allt i utf-8 igen
foreach ($words as $i => $word) {
	$words[$i] = utf8_encode($word);
}

Där alla ???? står har jag skrivit in specialtecken såsom åäöáā, etc. Pga att php-filen sparas som utf-8 blev dock detta fel, eftersom preg_split vill ha tecken i iso-8859-1. Mycket fult... Istället öppnade jag alltså filen som iso-8859-1 och skrev in dessa tecken, och sparade filen. Nu ser det ju rätt fult ut... Kanske vore det bättre att skriva in dem som utf-8 och sedan köra en utf8_decode på tecknen... hm... nåja... synpunkter på det hela?
koala är inte uppkopplad   Svara med citatSvara med citat