Doğru Cevap
-
eRen'in dediği gibi bir parametre eklemelisin ama bütün bbcodeları iptal etmen gerek yok. arraylari küçülterek ve smiley find ve replacei ile merge ederek halledebilirsin.
function bbcode($str, $isSmileyHide) { $str = htmlentities($str); $find = array( '/\[b](.*?)\[\/b]/is', '/\[u](.*?)\[\/u]/is', '/\[i](.*?)\[\/i]/is' ); $smileyFind = array( "/:p/", "/:o/"); $replace = array( '<strong>$1</strong>', '<u>$1</u>', '<i>$1</i>'); $smileyReplace = array( '<img src="/images/forum/icon_tongue.gif" alt=":p" border="0" height="15" width="15">', '<img src="/images/forum/icon_embarrassed.gif" alt=":o" border="0" height="15" width="15">'); if($isSmileyHide == 1) { $find = array_merge($find, $smileyRind); $replace = array_merge($replace, $smileyReplace); } $str = preg_replace($find, $replace, $str); return nl2br($str);
Cevaplar
-
Fonksiyonla uğraşmak yerine şöyle yapmak daha kolay olabilir:
echo ($hide_smilies==1) ? $message : bbcode($message);
-
bbcode($message,$hide_smiles);
fonksiyonu yukarıdaki şekilde parametre ile kullanıp aşağıdaki şekilde bir düzenleme yapabilirsiniz.
<? function bbcode($str,$hide) { if ($hide!=1) { $str = htmlentities($str); $find = array( "/:p/", "/:o/", '/\[b](.*?)\[\/b]/is', '/\[u](.*?)\[\/u]/is', '/\[i](.*?)\[\/i]/is' ); $replace = array( '<img src="/images/forum/icon_tongue.gif" alt=":p" border="0" height="15" width="15">', '<img src="/images/forum/icon_embarrassed.gif" alt=":o" border="0" height="15" width="15">' '<strong>$1</strong>', '<u>$1</u>', '<i>$1</i>', $str = preg_replace($find, $replace, $str); return nl2br($str); } else { return nl2br($str); } } ?>