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?