SEO url web sitelerinde kullanabileceğiniz konunuzun başlığı veya anahtar kelimelerini URL satırında içeren ve bu sebeple arama motorları tarafından üst sıralarda yer almanızı sağlar. Örneğin sitenizde bir konu olsun ve başlığı “Merhaba Dünya” adlı konunuz var. Bu konu başlığı web sitenizin url kısmında “merhaba-dunya.html” olarak yazmalıdır.
Peki burada ü karakterini u ‘ya çevirmek görünürde çok basittir. “sttrtr” fonksiyonu ile çevirebilirsiniz fakat geriye kalan 1 milyondan fazla karakteri bu hale getirmek bir hayli zor olucaktır. Tüm karakteri bu şekilde friendly url haline getirebilmek için html special characters tablosundan faydalanmamız gerekecek.
HTML Special Characters

á
Á
á
Á
à
À
à
À
â
Â
â
Â
å
Å
å
Å
ã
Ã
ã
Ã
ä
Ä
ä
Ä
æ
Æ
æ
Æ
ç
Ç
ç
Ç
é
É
é
É
è
È
è
È
ê
Ê
ê
Ê
ë
Ë
ë
Ë
í
Í
í
Í
ì
Ì
ì
Ì
î
Î
î
Î
ï
Ï
ï
Ï
ñ
Ñ
ñ
Ñ
ó
Ó
ó
Ó
ò
Ò
ò
Ò
ô
Ô
ô
Ô
ø
Ø
ø
Ø
õ
Õ
õ
Õ
ö
Ö
ö
Ö
ß ß
ú
Ú
ú
Ú
ù
Ù
ù
Ù
û
Û
û
Û
ü
Ü
ü
Ü
ÿ ÿ



Tabloda gördüğünüz bu tip karakterlerden sadece bir kaçı. Dikkat ederseniz “á, Á” gibi karakterlerin html kodu “a” ile başlıyor. bundan faydalanarak bu tip karakterleri “a” ya çevirebiliriz. Aynı şekilde “ü” karakterinin html kodu “u” ile başlamakta. Şimdi bu özellikten faydalanarak tanımlı olan bütün karakterleri “friendly URL” ‘ye php kullanarak çevirelim.

//öncelikle bu iş için çalışmamız tamamen UTF-8 olarak kullanılmalı. Diğer karakter kümeleri işe yaramamaktadır. Fakat UTF-8 in de dezavantajı “ş, ğ, ı” harflerinin tanımlı olmamasıdır.
function friendly_url($string){
// UTF-8 karakter kümesini iso-8859-9 standardına çeviriyoruz. Amacımız karakterleri html specials tablosuna sorunsuz bir şekilde dönüştürebilmek.
$string = iconv(“UTF-8″, “ISO-8859-1//TRANSLIT”, $string);
// bu bölümde boşluk, / gibi karakterlerden kurtuluyoruz ve “-” karakterine dönüştürüyoruz.
$string = preg_replace(“`[.*]`U”,”",$string);
$string = preg_replace(‘`&(amp;)?#?[a-z0-9]+;`i’,'-’,$string);

// karakterleri html koduna çeviriyoruz.
$string = htmlentities($string, ENT_QUOTES, ‘ISO-8859-1′);
//UTF-8 kullanmamızın dezavantajı bu noktada oluşuyor. tanımlı olmayan karakterleri dönüştürüyoruz.
$trans = array( “þ” => ‘s’, “ð” => ‘g’, “Þ” => ‘S’, “Д => ‘G’, “Ý” => ‘I’, “ý” => ‘i’ );
//bu bölümde html special characters tablosunun &# karakterinden hemen sonraki karakterini alıyoruz.
$string = strtr($string, $trans); $string = preg_replace( “`&([a-z]) (acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i”,”\1″, $string );
$string = preg_replace( array(“`[^a-z0-9]`i”,”`[-]+`”) , “-”, $string);
//dönüşümü geri çağırıyoruz.
return strtolower(trim($string, ‘-’));
}

//deneme alanı
$string = “üğşiloöçĞÜŞÖÇIiııİİİ MerhabaWMAraci”;
echo friendly_url($string);
?>