
İçerikler
Bu dersimizde PHP ile BBCODE yapımı hakkında bilgi vermiş olacağım. Derse geçmeden önce BBCODE hakkında biraz bilgi verip akışa devam etmek istiyorum.
BBCODE Nedir?
BBCode, HTML etikerlerini yönetmek için kullanılan bir sistemdir. Özellikle forum sitelerinde bir resim yada url eklemek istediğinizde köşeli parantezlerle karşılaşmışsınızdır. İşte bu köşeli parantezli etiketler BBCode olarak adlandırılmaktadır. Kullanıcıdan alınan verilerin direkt olarak işleme konulmayıp BBCode ile işlem görmesi veritabanı için daha sağlıklı olacaktır. Ayrıca kullanılmasını istemediğiniz özelliklerinde engellenmesini sağlayabilirsiniz.
BBCode yapısında etiketler köşeli parantezler ile belirtilmektedir. Regex desenleri ile istediğiniz HTML etiketine istediğiniz verileri girebilirsiniz.
BBCODE Yapımı
PHP ile BBCode yapmak için bir fonksiyon oluşturmak gerekecektir. Bu fonksiyonda tek bir parametre alarak gönderilen yazının filtreden geçirilmesini sağlamalıdır. Hazırlanacak olan fonksiyda iki işlem yapılacaktır. İlk olarak BBCode yapısında hazırlayacağımız ifadeleri köşeli parantezler ile tanımlıyoruz. Bu işlemi birden fazla etiket içi yapacağımızdan dolayı array(dizi) kullanıyoruz.
BBCode için köşeli parantez tanımlaması yaptıktan sonra bu ifadelerin HTML karşılığını belirtiyoruz. Verilerin yer almasını istediğiniz alanları $1 yardımı ile belirliyoruz.
Gerekli tanımlamalar sonrasında preg_replace() fonksiyonu ile bu iki değerin değiştirilmesini sağlıyoruz. Böylelikle fonksiyona gönderilen parametredeki verileri array içerisinde belirtmiş olduğumuz değerler ile değiştirmiş oluyoruz.
function bbCode($text) { // BBcode Tanımlamaları $bbcode = array( '~\[b\](.*?)\[/b\]~s', '~\[i\](.*?)\[/i\]~s', '~\[u\](.*?)\[/u\]~s', '~\[quote\](.*?)\[/quote\]~s', '~\[size=(.*?)\](.*?)\[/size\]~s', '~\[color=(.*?)\](.*?)\[/color\]~s', '~\[url\]((?:ftp|https?)://.*?)\[/url\]~s', '~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s' ); // HTML Etiketleri $html = array( '<b>$1</b>', '<i>$1</i>', '<span style="text-decoration:underline;">$1</span>', '<pre>$1</'.'pre>', '<span style="font-size:$1px;">$2</span>', '<span style="color:$1;">$2</span>', '<a href="$1">$1</a>', '<img src="$1" alt="" />' ); // BBCode Çeviriyoruz return preg_replace($bbcode,$html,$text); }
Yukarıda yer alan bbCode() fonksiyonunda BBCode işlemlerinin yapılmasını sağlıyoruz. Bu fonksiyonu kullanmak için de fonksiyon ismini kullanıp içerisine BBCode ile yazılmış olan değeri eklemek olacak.
$yazi = "Merhaba, Ben [b]ibrahim Çevrük[/b], bu dersimizde [u]BBCode[/u] üzerinde duracağız. Dersimiz [i]yazılı[/i] bir şekilde yer alacaktır. [color=red] incelemenizi[/color] tavsiye ederim."; echo bbCode($yazi);
Yukarıda yer alan kullanımla birlikte yazıda belirtilen BBCode tanımlamaları HTML etiketlerine dönüştürülecektir. Böylelikle Verileri HTML etiketlerinin dışında kayıt etmiş olacak ve istediğimiz değişikliği yapabilecek esnek bir durum haline getirmiş olacağız.
“Merhaba, Ben ibrahim Çevrük, bu dersimizde BBCode üzerinde duracağız. Dersimiz yazılı bir şekilde yer alacaktır. incelemenizi tavsiye ederim.”
Örneği kayıt edip çalıştırdığımızda ise yukarıdaki gibi HTML etiketleriyle düzenlenmiş bir yazı elde etmiş olacağız.