Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

PHP fonksiyonları ile ilgili yardım

Merhaba,
Bir konuda yardıma ihtiyacım var.
Bir forumumuz var, eğer $hide_smilies = 1 olursa :P, :O gibi işaretlerin imajlarla değiştirilmesini istemiyorum.

Fonksiyonun kullanımı:

bbcode($message);

Fonksiyon:

function bbcode($str)
{
    $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);
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • sevketbulamaz adlı üyenin fotoğrafı
    8 yıl önce yazılmış
    56 cevap - 0 soru
    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

  • 1
    jonathan-kuhn adlı üyenin fotoğrafı
    8 yıl önce yazılmış
    1 cevap - 0 soru
    Fonksiyonla uğraşmak yerine şöyle yapmak daha kolay olabilir:

    echo ($hide_smilies==1) ? $message : bbcode($message);
    
  • eReN adlı üyenin fotoğrafı
    8 yıl önce yazılmış
    17 cevap - 9 soru
    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);
    }
    }
    ?>