PHP Multi Byte str_replace?

Je suis en train de faire accentués remplacement de caractères en PHP, mais obtenir funky résultats, je pense être parce que je suis en utilisant une chaîne UTF-8 et str_replace peut pas gérer correctement les multi-chaînes d'octets..

$accents_search     = array('á','à','â','ã','ª','ä','å','Á','À','Â','Ã','Ä','é','è',
'ê','ë','É','È','Ê','Ë','í','ì','î','ï','Í','Ì','Î','Ï','œ','ò','ó','ô','õ','º','ø',
'Ø','Ó','Ò','Ô','Õ','ú','ù','û','Ú','Ù','Û','ç','Ç','Ñ','ñ'); 

$accents_replace    = array('a','a','a','a','a','a','a','A','A','A','A','A','e','e',
'e','e','E','E','E','E','i','i','i','i','I','I','I','I','oe','o','o','o','o','o','o',
'O','O','O','O','O','u','u','u','U','U','U','c','C','N','n'); 

$str = str_replace($accents_search, $accents_replace, $str);

Résultats que j'obtiens:

Ørjan Nilsen -> orjan Nilsen

Résultat Attendu:

Ørjan Nilsen -> Orjan Nilsen

Edit: j'ai mon caractère interne et gestionnaire de défini pour l'UTF-8 (selon mb_internal_encoding()), la valeur de $str est de l'UTF-8, donc à partir de ce que je peux dire, toutes les chaînes concernées sont en UTF-8. Ne str_replace() détection d'un char d'ensembles et de les utiliser correctement?

source d'informationauteur Ian