PHP ile BBCODE
Forumlar, içerik yönetim sistemleri ve bazı bloglarda görebileceğiniz BBCODE sisteminin ASP kullanarak nasıl yapılacağı Ayberk tarafından şurada anlatılmıştı. Şimdi bende size aynı/benzer bir işlemin PHP ile nasıl yapılacağını göstereceğim.
function link($text) {
$pattern = '/[url=((http|ftp)://(.+?))](.+?)[/url]/';
$replacement = '<a href="\1" target="_blank">\4</a>';
return preg_replace($pattern,$replacement,$text);
}
Şimdi biraz açıklama yapmam gerekiyor. Regular Expressions denilen Türkçeye düzenli ifadeler olarak çevirebileceğimiz fonksiyon kütüphanesini kullanıyoruz. PHP'de PCRE(Perl Compatible Regular Expressions) ve Extended POSIX olmak üzere 2 çeşit RegEx tipi vardır. Ben diğer dillerle uyum ve hız açısından PCRE kullanıyorum ve sizlere de aynısını tavsiye ederim.
Pattern bölümü, verilen metin içerisinde aranacak cümlecikleri tanımlıyor.
Replacement bölümü ne ile değiştirileceğini belirtiyor. Buradaki \1 ve \4 özel anahtar kelimeler. Pattern içerisinde her parantez içi bir sayı ile ilişkilendirilir bu örnekte:
1 e karşılık gelen ((http|ftp)://(.+?))
2 ye karşılık gelen (http|ftp)
3 e karşılık gelen (.+?)
4 e karşılık gelen (.+?)
2 ve 3 zaten 1 in içerisinde var olduklarından onları kullanmıyoruz. http ve ftp protokollerine daha sonradan isteğe göre ek yapılabilir.
Son olarak preg_replace fonksiyonumuz var. Zaten diğerlerini açıkladıktan sonra fonksiyonu ayrıca açıklamak gerekeceğini düşünmüyorum.
Kullanım şekli:
[url=http://adres]Açıklama[/url]
PHPÖzgün Sarı17 Haziran 2009, ÇarşambaEkle Bunu