There seems to be a bug in the localization for strnatcmp and strnatcasecmp. I searched the reported bugs and found a few entries which were up to four years old (but the problem still exists when using swedish characters).These functions might work instead.<?phpfunction _strnatcasecmp($left, $right) { return _strnatcmp(strtolower($left), strtolower($right));}function _strnatcmp($left, $right) { while((strlen($left) > 0) && (strlen($right) > 0)) { if(preg_match('/^([^0-9]*)([0-9].*)$/Us', $left, $lMatch)) { $lTest = $lMatch[1]; $left = $lMatch[2]; } else { $lTest = $left; $left = ''; } if(preg_match('/^([^0-9]*)([0-9].*)$/Us', $right, $rMatch)) { $rTest = $rMatch[1]; $right = $rMatch[2]; } else { $rTest = $right; $right = ''; } $test = strcmp($lTest, $rTest); if($test != 0) { return $test; } if(preg_match('/^([0-9]+)([^0-9].*)?$/Us', $left, $lMatch)) { $lTest = intval($lMatch[1]); $left = $lMatch[2]; } else { $lTest = 0; } if(preg_match('/^([0-9]+)([^0-9].*)?$/Us', $right, $rMatch)) { $rTest = intval($rMatch[1]); $right = $rMatch[2]; } else { $rTest = 0; } $test = $lTest - $rTest; if($test != 0) { return $test; } } return strcmp($left, $right);}?>The code is not optimized. It was just made to solve my problem.