Dosya upload işlemleri için dosya uzantısı kontrolü yapan ve dosya adındaki karakterlerde değiştirme / validasyon yapabilen fonksiyon yazdıydım, paylaşayım. Sessiz kaldık bir süredir.

function savePostFile($field, $path, $allowedExts = array('jpg', 'jpeg', 'gif', 'png'), $replace = array('/[^a-z0-9.]/i', '-') ) {
	if (in_array(end(explode(".", strtolower($field['name']))), $allowedExts)) {
		$file	= explode('.', strtolower(preg_replace($replace[0], $replace[1], $field['name'])));
		$ext	= '.' . array_pop($file);
		$name	= implode('.', $file);
		$saveName = substr($name, 0, 100) . $ext;                       
		
		if (move_uploaded_file($field['tmp_name'], $path . $saveName)) {
			return $saveName;
		}
	}
	return false;
}

$field parametresine $_FILES[‘fieldName’] tarzı bir giriş yapmalısınız. $path, kaydedilecek yol; $allowedExts izin verilen uzantılar dizisi; $replace ise ilk indisinde regexp, ikinci indisinde değiştirilecek karakteri barındıran bir dizi. Default değeri alfanumerik karakterleri tutup diğerlerini – ile değiştirmekte.

Kolay gelsin.