Hejka

nie wiem dlaczego ale wszystkie znaki diakrytyczne zamienia mi na polskie bez ogonków tj. ą->a, lecz problem tkwi w tym, że wszystkie prócz `Ó`, `ó` są zamieniane.
Co zrobić by także ta literka była zamieniana na `o` ?
Drugi problem to taki iż, gdy zaznaczam pewien plik .mp3 to mi go nie uploaduje gdyż jest to mp3 a inny także mp3 to wogóle psuje mi działanie skryptu bo następuje zero reakcji ze strony skryptu.
Od czego zależy to czy skrypt zadziała i wyświetli błąd a kiedy nie ?
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="img[]" multiple="multiple" />
<input type="submit" name="wyslij" value="UPLOAD">
</form>
<?php
/*
function clear_name( $str, $replace = "" ){
// konwersja znaków utf do znaków podstawowych
$str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
// Niektóre francuskie i niemieckie litery pozostawiają po takiej konwersji (jak powy?ej)
// dodatkowe znaki. Poni?sze dwie linijki te znaki wycinają
$charsArr = array( '^', "'", '"', '`', '~');
$str = str_replace( $charsArr, '', $str );
$return = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\.]/','',strtolower($str))));
return str_replace(' ', $replace, $return);
}
//echo clear_name('ĄĘĆŁÓŃŹŻ.JPG');
*/
function clear_name($nazwa){
$plik_nazwa = $nazwa;
$plik_nazwa = trim($plik_nazwa); //$plik_nazwa = preg_replace("@'@", "", $plik_nazwa);
//$plik_nazwa = preg_replace("@&@", "", $plik_nazwa);
//male znaki diakrytyczne
//duze znaki diakrytyczne
//$plik_nazwa = strtr($plik_nazwa, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");
//$plik_nazwa = strtr($plik_nazwa, "\xA1\xA6\xAC\xB1\xB6\xBC", "\xA5\x8C\x8F\xB9\x9C\x9F");
return $plik_nazwa;
}
function check_ext($name){
$ext=clear_name($name);
return $ext;
}
$dir='upload';
$max_rozmiar=3072000;
$whitelist=array('jpg', 'png', 'gif', 'jpeg');//akceptowane rozszerzenia if(isset($_POST['wyslij'])){ $ile=count($_FILES['img']['name']);//ilosc przesylanych plikow ogolem $licz=0;
$istnieje=0;
for($i=0; $i<$ile; $i++){
//echo''.$i.' '.$_FILES['img']['name'][$i].'<br/>';
if(!file_exists("".$dir."/".clear_name
($_FILES['img']['name'][$i])."")){ if($_FILES['img']['tmp_name'][$i]!='' AND
is_uploaded_file($_FILES['img']['tmp_name'][$i]) AND
$_FILES['img']['size'][$i]<=$max_rozmiar AND
in_array(check_ext
($_FILES['img']['name'][$i]),$whitelist)){ move_uploaded_file($_FILES['img']['tmp_name'][$i], "upload/".clear_name
($_FILES['img']['name'][$i]).""); echo''.clear_name
($_FILES['img']['name'][$i]).' - Pomyslnie wgrany<br/>'; $licz++;
}else{
}
}else{
$istnieje++;
}
}
$nieodpowiednie=$ile-$licz-$istnieje;
<br />
Wszystkich plikow: '.$ile.'<br />
Wgranych pomyslnie: '.$licz.'<br />
Juz istniejacych: '.$istnieje.'<br />
Nieodpowiednich plikow: '.$nieodpowiednie.'<br />
';
}
?>