CodeIgniter Upload fonksiyonunun türkçe karakterleri silmesini engelleme

CodeIgniter ile dosya yüklerken dosya isimleri CodeIgniter tarafından url dostu hale dönüştürülüyor. Yalnız bu işlem sırasında türkçe olan bütün karakterleri kaybediyorsunuz. Bu handikapı aşmak amacıyla CodeIgniter’ın Upload kütüphanesine ufak bir müdahalede bulunuyoruz.
Aşağıdaki dosyayı MY_Upload.php dosya adıyla application/libraries klasörünün içerisine kaydediyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class MY_Upload extends CI_Upload {
 
	function clean_file_name($filename)
	{
		$bad = array(
			"<!--",
			"-->",
			"'",
			"<",
			">",
			'"',
			'&',
			'$',
			'=',
			';',
			'?',
			'/',
			"%20",
			"%22",
			"%3c",		// <
			"%253c",	// <
			"%3e",		// >
			"%0e",		// >
			"%28",		// (
			"%29",		// )
			"%2528",	// (
			"%26",		// &
			"%24",		// $
			"%3f",		// ?
			"%3b",		// ;
			"%3d"		// =
		);
 
		$filename = str_replace($bad, '', $filename);
 
//	Tayfun ekleme {
		$specialLetters = array(
			'a' => array('á','à','â','ä','ã'),
			'A' => array('Ã','Ä','Â','À','Á'),
			'e' => array('é','è','ê','ë'),
			'E' => array('Ë','É','È','Ê'),
			'i' => array('í','ì','î','ï','ı'),
			'I' => array('Î','Í','Ì','İ','Ï'),
			'o' => array('ó','ò','ô','ö','õ'),
			'O' => array('Õ','Ö','Ô','Ò','Ó'),
			'u' => array('ú','ù','û','ü'),
			'U' => array('Ú','Û','Ù','Ü'),
			'c' => array('ç'),
			'C' => array('Ç'),
			's' => array('ş'),
			'S' => array('Ş'),
			'n' => array('ñ'),
			'N' => array('Ñ'),
			'y' => array('ÿ'),
			'Y' => array('Ÿ'),
			'G' => array('Ğ'),
			'g' => array('ğ')
		);
 
		foreach($specialLetters as $letter => $specials){
			foreach($specials as $s){
				$filename = str_replace($s, $letter, $filename);
			}
		}
 
		$fd = explode('.', $filename);
		$uzanti = strtolower(array_pop($fd));
		array_push($fd, $uzanti);
		$filename = implode('.', $fd);
//	} Tayfun
 
		return preg_replace("/[^a-zA-Z0-9\-\.]/", "_", stripslashes($filename));
	}
 
}
?>

Burada daha önceki yazımda belirttiğim fonksiyonun özelliklerini CodeIgniter Upload kütüphanesine ekliyoruz. Böyle bundan sonra türkçe karakterli dosyaları uygulamamıza yüklediğimiz zaman, yazılım o karakterleri düzeltilmiş isimde silmek yerine uygun olan karakterleri kullanıyor. Yukarıdaki eklemede bir de dosya uzantısının küçük harfe dönüştürmüşüm. O da şirketten bir ekleme olmuş.

1 thought on “CodeIgniter Upload fonksiyonunun türkçe karakterleri silmesini engelleme

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir