Ekrem
Kategori:Çalışma Notları
| Tarih:
14.12.2011 16:53:25
Bu yazı 166 defa okundu
Akıllı URL
http://linkx.me/Rr3y9 adresinde denk geldiğim bir yazıyı paylaşmak istiyorum
Son zamanların meşhur tekniklerinden birisi de malumunuz olduğu üzere akıllı URL ler kullanmak.
Örnek olarak bu sayfanın adres satırına bakabilirsiniz:
http://www.daltinkurt.com/DevrimAltinkurt/CMS/Icerik/149/Tam-ekran-iframe.aspx
Temel olarak amacımız;
? URL lerimizin sadece a-z, A-Z, 0-9, - (tire) ve _ (alt çizgi) karakterlerinden oluşmasını sağlamak,
? bunların haricinde kalan karakterlerin yerine bir ufak - (tire) yerleştirmek,
? ş » s, ü » u, vb. gibi alfabemize özgü karakterleri ingiliz alfabesindeki karakterlerden uygun olanına dönüştürmek.
Örnekle izah etmeye çalışalım. Akıllı URL kullanan haber sitelerinde genellikle haberin başlığı url de yer alır.
http://istanbul.meb.gov.tr/IcerikDetay/1741/Sinirlar-Egitimle-Birlesiyor.aspx de olduğu gibi.
Biz de elimizdeki bir stringi akıllı URL ler için temizleyen/hazırlayan bir metod yazalım o halde:
Bu iş için güzel bir genişletme metodu yazalım. (Extension method)
public static DA
{
public static string ToURL(this string s)
{
if (string.IsNullOrEmpty(s)) return "";
if (s.Length > 80)
s = s.Substring(0, 80);
s = s.Replace("ş", "s");
s = s.Replace("Ş", "S");
s = s.Replace("ğ", "g");
s = s.Replace("Ğ", "G");
s = s.Replace("İ", "I");
s = s.Replace("ı", "i");
s = s.Replace("ç", "c");
s = s.Replace("Ç", "C");
s = s.Replace("ö", "o");
s = s.Replace("Ö", "O");
s = s.Replace("ü", "u");
s = s.Replace("Ü", "U");
s = s.Replace("'", "");
s = s.Replace("\"", "");
Regex r = new Regex("[^a-zA-Z0-9_-]");
//if (r.IsMatch(s))
s = r.Replace(s, "-");
if (!string.IsNullOrEmpty(s))
while (s.IndexOf("--") > -1)
s = s.Replace("--", "-");
if (s.StartsWith("-")) s = s.Substring(1);
if (s.EndsWith("-")) s = s.Substring(0, s.Length - 1);
return s;
}
}
metotta yaptığımız işi özetleyelim:
1. uzunluğu 80 karakter ile sınırladık.
2. ş » s, ğ » g, vb. dönüşümleri yaptık.
3. a-z, A-Z, 0-9, - ve _ haricindeki tüm karakterleri - ile değiştirdik.
4. (ihtimal dahilindedir) yanyana -- oluşursa tek - ile değiştirdik.
5. baştaki ve sondaki fazlalık - yi temizledik.
Kullanımı da son derece kolay:
string baslik = "C# ve Java karşılaştırması";
string url = baslik.ToURL();
Oluşan url: "C-ve-Java-karsilastirmasi"
baslik.ToURL() yi nasıl yazabildiğimizin sırrını bir başka yazıda anlatmak isterim, ama kısaca söylemek gerekirse, static bir class içerisinde static bir metot yazıyoruz. Bu metodun ilk parametresinde hangi tipteki değişkenler/nesneler için kullanacağımızı belirtiyoruz. Sonra da sanki .net framework ü ile beraber gelen bir metotmuş gibi kullanabiliyoruz.
Eğer DataList, Repeater, GridView ile kullanmak isterseniz, şu şekilde kullanabilirsiniz:
NavigateUrl='<%#string.Format("/Haber/{0}/{1}.aspx",Eval("Id"),Eval("Baslik").ToString().ToURL()) %>'>