25 Aralık 2008 Perşembe

PHP: Vbulletin tarzı link kısaltma işlemi

Vbulletin (diger forum ve CMS) kullanan sitelerde yazılan mesajlarda kullanılan linkler uzun olduğunda kısaltıldığını farketmişsinizdir. Bölümlenemediği için tasarımı bozan, buna ek olarak görüntü kirliliğine yol açan bu uzun linkleri kısaltmak en mantıklı yol oluyor. Bunun için link_kisalt isimli bir fonksiyon oluşturarak, linklerin karakter sayısı kontrol ettikten sonra linki ekrana yazdıracağız.

Örnek Linkimiz:
http://www.turkwm.com/search?updated-max=2008-12-06T00%3A35%3A00%2B02%3A00&max-results=5

İşlem bittiği andaki görüntüsü:
http://www.turkwm.com/search?updated-max=2008-12-06T00%3A35%3A00%2B02%3A00&max-results=5

<?
function link_kisalt($link,$uzunluk=75) {
if( $uzunluk>45 ) {
// Uzunluk degerini kontrol ediyoruz.
// Eger uzunluk degeri girmezseniz ontanimli degeri 75'tir
// Uzunluk degeri 45'ten fazlaysa bir sonraki adima gecilir.

if( strlen($link)>$uzunluk ) {
// Linkteki karakter sayisi uzunluk degerinden fazla ise
// substr fonksiyonu ile linkten belirli yerler kesiliyor
// Baslangictan uzunluk degerimizin yarisi kadar, sondan ise 10 karakter gosteriliyor.
$link = substr( $link,0,($uzunluk/2) ).'...'.substr($link,-10);
}
}
return $link;
}
// Deneme gosterimi
$url = 'http://www.turkwm.com/search?updated-max=2008-12-06T00%3A35%3A00%2B02%3A00&max-results=5';
echo '<a href="'.$url.'" target="_blank" rel="nofollow">'.link_kisalt($url).'</a>';
// Ornegin 75 karakter degilde, 60 karakterden uzun linkleri kisaltmak isterseniz
// link_kisalt($url) yerine link_kisalt($url,60) yazmaniz gerekir.
?>

Yukarıdaki kodlari ornek.php olarak kaydedip test edebilirsiniz.