Dosya isimleri ve web URL’leri için isim temizleme fonsiyonu

Uygulamalarımızda resim yada dosya yüklemesi yaparken dosya isimlerinde bulunan uygun olmayan karakterleri düzeltme gereksinimi duyarız. Ya da SEO uyumlu siteler yaparken, hazırladığımız sitedeki içerik için URL dostu adresler üretmemiz gerekir. İşte bu durumlarda kullandığım sadece türkçe değil aslında pek çok dil için yararlı olabilecek bir fonksiyon kullanıyorum.

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
	function temizisim($str) {
		$ozelHarfler = 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('Ÿ')
		);
 
		$ozelKarakterler = array ('#', '$', '%', '^', '&', '*', '!', '~', '"', '\'', '=', '?', '/', '[', ']', '(', ')', '|', '<', '>', ';', ':', '\\', ', ');
		$str = str_replace($ozelKarakterler, '', $str);
		$str = str_replace(' ', '-', $str);
		foreach($ozelHarfler as $harf => $ozeller){
			foreach($ozeller as $tektek){
				$str = str_replace($tektek, $harf, $str);
			}
		}
		return preg_replace("/[^a-zA-Z0-9\-\.]/", "_", $str);
	}

Yukarıdaki fonksiyonu aşağıdaki şekilde kullandığımızda

<?php echo temizisim('Bu çok özel bir uğraşı!') ?>

Alacağınız sonuç aşağıdaki gibi olcaktır.

Bu_cok_ozel_bir_ugrasi

Bu fonksiyona dilenirse boşluk ayracı olarak kullanılacak karakter bir seçenek olarak gönderilebilir; – ve _ olarak. Yada ismin küçük harflere dönüştürülmesi için de bir parametre kullanmak mümküdür

Bir sonraki yazımda buna benzer bir fonksiyon ile CodeIgniter’a bir yardımda bulunacağız.

Bir cevap yazın

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