PHP ile BBCODE
Forumlar, icerik yonetim sistemleri ve bazi bloglarda gorebileceginiz BBCODE sisteminin ASP kullanarak nasil yapilacagi Ayberk tarafindan surada anlatilmisti. Simdi bende size ayni/benzer bir islemin PHP ile nasil yapilacagini gosterecegim.


function link($text) {
$pattern = '/[url=((http|ftp)://(.+?))](.+?)[/url]/';
$replacement = '<a href="\1" target="_blank">\4</a>';
return preg_replace($pattern,$replacement,$text);
}


Simdi biraz aciklama yapmam gerekiyor. Regular Expressions denilen Turkceye duzenli ifadeler olarak cevirebilecegimiz fonksiyon kutuphanesini kullaniyoruz. PHP'de PCRE(Perl Compatible Regular Expressions) ve Extended POSIX olmak uzere 2 cesit RegEx tipi vardir. Ben diger dillerle uyum ve hiz acisindan PCRE kullaniyorum ve sizlere de aynisini tavsiye ederim.
Pattern bolumu, verilen metin icerisinde aranacak cumlecikleri tanimliyor.
Replacement bolumu ne ile degistirilecegini belirtiyor. Buradaki \1 ve \4 ozel anahtar kelimeler. Pattern icerisinde her parantez ici bir sayi ile iliskilendirilir bu ornekte:
1 e karsilik gelen ((http|ftp)://(.+?))
2 ye karsilik gelen (http|ftp)
3 e karsilik gelen (.+?)
4 e karsilik gelen (.+?)
2 ve 3 zaten 1 in icerisinde var olduklarindan onlari kullanmiyoruz. http ve ftp protokollerine daha sonradan istege gore ek yapilabilir.
Son olarak preg_replace fonksiyonumuz var. Zaten digerlerini acikladiktan sonra fonksiyonu ayrica aciklamak gerekecegini dusunmuyorum.

Kullanim sekli:
[url=http://adres]Aciklama[/url]
June 17, 2009
Ozgun Sari
PHP
0 yorum