Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

php'de linkleri tıklanabilir yapma gibi bir şey

smd

0
Onaylı Üye
Üye
Katılım
23 Kasım 2010
Mesajlar
63
Açılan Konu
14
Tepki puanı
1
özellikle kullanıcıların mesaj atabildiği tip sitelerde mesaj kutularına koydukları linkleri tıklanabilir yapmak çok önemli biliyorsunuz. otomatik olarak http:// yi ya da www'yu bulup boşluğa kadar takip etme özelliği.

elimde şöyle bir kod var;
Kod:
function clickable($url){
	$sonuc = str_replace("\n", " \n", $url);
	$sonuc = str_replace("<br />", " <br />", $sonuc);
$sonuc = str_replace("<br>", " <br>", $sonuc);
    $in=array(
    '`((?:https?|ftp)://\S+[[:alnum:]]/?)`si',
    '`((?<!//)(www\.\S+[[:alnum:]]/?))`si'
    );
    $out=array(
    '<font class="link"><a href="$1" target="_blank"  rel=nofollow>$1</a></font> ',
    '<font class="link"><a href="http://$1" target="_blank" rel=\'nofollow\'>$1</a></font>'
    );
    $sonuc = preg_replace($in,$out,$sonuc);
	return $sonuc;
}

tıklanabilir şekilde yazdırma için de; echo clickable($mesaj);

şimdi bu kod benim için çok karışık. bu gayet güzel linkleri tıklanabilir yapıyor. ama benim bunu kendi ihtiyacıma göre düzenlemem lazım. ama bu replace'leri bir türlü çözemedim. ihtiyacım olan şu, imageboard'da takılan varsa bilir; alıntıları >> şeklinde belirtirler. eğer >>'dan sonra bir numara dizisi geliyorsa örneğin mesaj.php?id=numaradizisi'ne gitmeli. eğer yazı geliyor ise bir font class'a atanmalı. olabildiğince açık anlatmaya çalıştım. yani bu kodu bana >>156'yı bulup mesaj.php?id=156'ya, >>deneme9 u bulup hiç bir şey yapmayacak şekilde düzenleyecek bir üstad var mı? şimdiden çok teşekkürler
 

konumuzseo

0
Onaylı Üye
Üye
Katılım
1 Kasım 2011
Mesajlar
34
Açılan Konu
1
Tepki puanı
0
Konum
İstanbul
En sade olarak;

PHP:
$gelen_veri = "bla bla bla http://www.siteadresi.com bla bla bla";
$gelen_veri = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $gelen_veri);
echo $gelen_veri;
gibi kullanabilirsiniz.

Ekleme: Sanırım istediğiniz tam olarak bu değil ama :)
 
Üst