Aller au contenu

bb code


Dorsy

Sujets conseillés

bonjour,

Je viens sur le forum pour faire appel a vos conseils,

Je voudrais ajouter des balises bbcodes sur mon site du genre une <hr>, <marquee> & <justify>.

Et je ne sais pas comment faire et ce qu'il faut ajouter.

Merci pour vos reponses...

je vous laisse le code du fichier qui les gere :

function bbcode($texte,$aff_smileys=0, $aff_autres=0, $aff_table=0,$html=0) 
{


global $url_site;

global $color_bbcode;

global $bbcode_mot;

global $col_msg;




//ajout de slaches
if (!get_magic_quotes_gpc()) // directive anti pbm de slasches
{
$texte = addslashes($texte);}



//suppression des balises html et mise des & en &

$texte = str_replace (array("&","<",">","&#039;","&ea","&quote;"),array("&","<",">","'","&ea","&quote;"),$texte);


//transformation de l'ur du site pour le masque
$url_site2= str_replace('/',"\/",$url_site);


if($aff_autres!=0)
{

//passages à la ligne
$texte = str_replace ("\n",'<br />',$texte);

}

//affichage d'un mot en surligné
if($color_bbcode=="1")
{

$texte = eregi_replace($bbcode_mot,"<b style=\"backgroud-color: $col_msg;font-weight: bold;\">$bbcode_mot</b>",$texte);

}


//affichage des smileys
if($aff_smileys!=0)
{

$im=array('g3ag','g3bg','g28g','g29g','g23g','g7cg','g21g','g24g','g25g','g27g','g2ag','g3cg','g3dg','g3eg','g3fg','g40g',
'g5bg','g5cg','g5dg','g5fg','g7bg','g7dg');


$re=array(':',';','\(','\)','#','\|','!','$','%','\'','*','<','=','>','?','@','[','\\',']','_','\{','\}');


$i=0;

$rep=opendir('./images/smileys/'); //lecture du repertoire de smileys

while ($file = readdir($rep))
{

if ((strtolower(substr($file,-3))=="gif" || strtolower(substr($file,-3))=="jpg" || strtolower(substr($file,-3))=="png") && substr($file,0,1)=="s")
{



$id_img = substr($file,1,-4);


$id_img2[$i]='/'.$id_img.'/';

$fichier[$i]='<img src="images/smileys/'.$file.'" border="0" alt="smiley '.$file.'" />';

$i++;


}


}

$id_img2 = str_replace($im,$re,$id_img2);

closedir($rep);

clearstatcache(); //vidange

// echo '<pre>'.print_r($id_img2,true).'</pre>'; //informations pour debugage

$texte = preg_replace($id_img2,$fichier,$texte); //remplacement smileys

}


$search=array(
"/(\[taille=(([0-3])[0-9])\])(.*?)(\[\/taille\])/i", //taille
"/(\[panneau\])(.*?)(\[\/panneau\])/i", //panneau
"/[^]](\<\?php)(.*?)(\?\>)/ie",
"/(\[code\])(.*?)(\[\/code\])/ie", //code

"/(\[puce\])(.*?)(\[\/puce\])/i", //puce
"/(\[surlign\])(.*?)(\[\/surlign\])/i", //surlignement
"/(\[barre\])(.*?)(\[\/barre\])/i", //barre
"/(\[b\])(.*?)(\[\/b\])/i", //gras
"/(\[center\])(.*?)(\[\/center\])/i", //centrer
"/(\[i\])(.*?)(\[\/i\])/i", //italique
"/(\[u\])(.*?)(\[\/u\])/i", //souligné
"/(\[glow\])(.*?)(\[\/glow\])/i", //glow
"/(\[email\])(.[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+)(\[\/email\])/e", //emails
"/(\[email=(.[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+)\])(.*?)(\[\/email\])/ie", //emails
'/([^]^=^\/\"])(www.)([\w.\/=&~?;\-_\#]*)/i', //url auto www.
'/([^]^=\"])(http:\/\/|ftp:\/\/)([\w.\/=&~?;\-_\#]*)/i', //url auto http:// ftp://
"/(\[url\])($url_site2)(.[^\"\'\(\)\<\>\]\[]*?)(\[\/url\])/i", //url interne [url]http://monsite.com
"/(\[url=($url_site2)(.[^\"\'\(\)\<\>\]\[]*?)\])(.*?)(\[\/url\])/i", //url interne [url=http://monsite.com
"/(\[url\]http)(.[^\"\'\(\)\<\>\]\[]*?)(\[\/url\])/i", //url externe [url]http://...
"/(\[url\]www)(.[^\"\'\(\)\<\>\]\[]*?)(\[\/url\])/i", //url externe [url]www....
"/(\[url\]ftp)(.[^\"\'\(\)\<\>\]\[]*?)(\[\/url\])/i", //url esterne [url]ftp://
"/(\[url=(.[^\"\'\(\)\<\>\]\[]*?)\])(.*?)(\[\/url\])/i", //url externe [url=......]
"/(\[couleur=(\#[0-9A-F]{6}|[a-z]+)\])(.*?)(\[\/couleur\])/i", //couleur de police
"/(\[quote(=(.*?)\]|\]))(.*?)(\[\/quote\])/iUe", //citation de
//"/(\[quote name='(.*?)\'])(.(^\[\/quote\])?)(\[\/quote\])/iS",                                        //citation de
    //"/(\[quote name='(.*?)\'])(.*?)(\[\/quote\])/iX",                                                        //citation de
    //"/(\[quote\])(.(^\[\/quote\])?)(\[\/quote\])/i",                                              //citation
    //"/(\[quote\])(.*?)(\[\/quote\])/iX",                                                              //citation
    "/(\[img\]www)(.[^\"\'\(\)\<\>\]\[]*?)(\[\/img\])/i",                                            //images
    "/(\[img\])(.[^\"\'\(\)\<\>\]\[]*?)(\[\/img\])/i"                                                //images
         
     
    );


    $replace=array("<span style=\"font-size:\\2px\">\\4</span>",
    "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tbody><tr><td align=\"center\"><img src=\"images/pancarte_haut.gif\" alt=\"Panneau haut\" /></td></tr><tr><td class=\"panneau\" align=\"center\">\\2</td></tr><tr><td align=\"center\"><img src=\"images/pancarte.gif\" alt=\"Pancarte\" /></td></tr></tbody></table>",
    "'<b>Code PHP : </b><br /><div style=\"width:100%\" class=\"code_php\">'.bb_high('\\1\\2\\3').'</div>'",
    "'<b>Code PHP : </b><br /><div style=\"width:100%\" class=\"code_php\">'.bb_high('\\2').'</div>'",
    "<li>\\2</li>",
    "<span style=\"background-color: #FFFFCC\">\\2</span>",
    "<strike>\\2</strike>",
    "<b>\\2</b>",
    "<center>\\2</center>",
    "<i>\\2</i>",
    "<u>\\2</u>",
    "<div style=\"width:100%;filter:glow(color=#000000,strength=1);\">\\2</div>",
      "'<a href=\"mailto:'.brouillemail('\\2').'\">'.bb_email('\\2').'</a>'",
    "'<a href=\"mailto:'.brouillemail('\\2').'\">\\5</a>'",
    ' \\1<a href="http://\\2\\3" target="_blank">\\2\\3</a>',
    ' \\1<a href="\\2\\3" target="_blank">\\2\\3</a>',
    "<a href=\"\\2\\3\">\\2\\3</a>",
    "<a href=\"\\2\\3\">\\4</a>",
    "<a href=\"http\\2\" target=\"_blank\">http\\2</a>",
    "<a href=\"http://www\\2\" target=\"_blank\">www\\2</a>",
    "<a href=\"ftp\\2\" target=\"_blank\">ftp\\2</a>",
    "<a href=\"\\2\" target=\"_blank\">\\3</a>",
    "<span style=\"color:\\2\">\\3</span>",
    "bb_cite(\"\\1\\4\\5\")",//"<b>Citation de \\2 : </b><br /><div style=\"width:100%\" class=\"quote\">\\3</div>",
    //"<b>Citation de \\2 : </b><br /><div wstyle=\"width:100%\"  class=\"quote\">\\3</div>",
    //"<b>Citation : </b><br /><div style=\"width:100%\"  class=\"quote\">\\2</div>",
    //"<b>Citation : </b><br /><div style=\"width:100%\"  class=\"quote\">\\2</div>",
    "<img src=\"http://www\\2\" border=\"0\" alt=\"\" />",
    "<img src=\"\\2\" border=\"0\" alt=\"\" />"
    );





    $texte=preg_replace($search,$replace,$texte);  //remplacement de tous bbcodes



    //$test=preg_match_all($search,$replace,$texte);
    //echo "<pre>".print_r($test)."</pre>";
    //suppression des slashes
    $texte = stripslashes($texte);
    if($aff_table == 1)                  //tables

        {

        //balises html <table> <td> et <tr> acceptées

        $texte=preg_replace("/(\&lttable)(.*?)(\&gt)(.*?)(\&lt\/table\&gt)/i","<table border=\"1\" cellspacing=\"0\" cellpading=\"0\" \\2>\\4</table>", "$texte");

        $texte=preg_replace("/(\&lttr)(.*?)(\&gt)(.*?)(\&lt\/tr\&gt)/i","<tr\\2>\\4</tr>", "$texte");

        $texte=preg_replace("/(\&lttd)(.*?)(\&gt)(.*?)(\&lt\/td\&gt)/i","<td\\2>\\4</td>", "$texte");




        //affiche le tableau correspondant
        $texte1=explode("[table=",$texte);

        for($i=1;
        $i<count($texte1);
        $i++)
            {

            $fin=strpos($texte1[$i],"][/table]");

            $id_table=substr($texte1[$i],0,$fin);

            $text="[table=$id_table][/table]";

            $req_table=$tableau="";

            $req_table = reqmysql("SELECT * FROM tableau WHERE id=$id_table");

            $tableau = mysql_fetch_object($req_table);

            $texte=str_replace("$text",$tableau->contenu,$texte);

            }

        }


    if ($html==1)                  //si l'html est autorisé
        {

        $htmldang=array("/;
        /i","/\./i","/javascript/i","/\(/i","/\)/i","/script/i","/\&gt\;/i","/\&lt\;/i");
        $assure=array(";",".","Js","(",")","script",">","<");



        $texte=preg_replace($htmldang,$assure,$texte); //remplacement pour un minimu de sécu

        }




    return $texte;


    }

function bb_email($str){
return str_replace(array("@","."),array(" at "," dot "),$str);
}
function bb_cite($texte)
{
$texte1="";
$texte1=explode("[quote",$texte);
$j=0;
for($i=1; $i<count($texte1); $i++)
{
$j++;
$text=$texte1[$i];

if(substr($texte1[$i],0,1) == "=")
{

        $texte1[$i]=substr_replace($texte1[$i],"",0,1);
        $nb=strpos($texte1[$i],"]");
        $auteur=substr($texte1[$i],0,$nb);
        $texte1[$i]=substr_replace($texte1[$i],"",0,$nb+1);
        $texte1[$i]="<br /><b>Citation de $auteur : </b><br /><div style=\"width:100%\" class=\"quote\">$texte1[$i]";
}
else
{
        $texte1[$i]=substr_replace($texte1[$i],"",0,1);
        $texte1[$i]="<br /><b>Citation : </b><br /><div style=\"width:100%\" class=\"quote\">$texte1[$i]";
}
$texte=str_replace("[quote$text",$texte1[$i],$texte);
}

$nb_quote=substr_count($texte,"[/quote]");
while($j>$nb_quote)
{
$nb_quote++;
$texte.="</div><br />";
}
$texte=str_replace("[/quote]", "</div><br />" ,$texte);
return $texte;
}

function bb_high($texte){
$texte=str_replace (array("&","<",">","'", "<br />"),array("&","<",">","&#039;" ,"\n"),$texte);
$texte=stripslashes(stripslashes($texte));//pkoi 2 stripslashes je pense que c'est du au sql


$texte = highlight_string($texte,TRUE);
//echo $texte;
//mofif d'une fct trouvée sur php.net pour qu'elle marche
//replace <code><font color=""></font></code>
$texte = preg_replace('#<font color="(.*?)">(.*?)</font>#', '<span style="color: \\1">\\2</span>', $texte);
//replace other <font> elements
$texte=str_replace("<font color=\"","<span style=\"color:",$texte);
$texte=str_replace("</font>","</span>",$texte);
//$texte=preg_replace('#<font color="(.*?)">(.*?)</font>#sU', '<span style="color: \\1">\\2</span>', $texte);
//changement de couleur des variables
$texte= preg_replace("/[$](\w*)/i","<span style=\"color:#008080\">$\\1</span>",$texte);

return $texte;
}

?>

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Peut-être qu'en laissant le temps aux intervenants de te répondre (parce que quelques heure séparent tes deux messages...si on ne compte pas les heures où la majorité des gens dorment), tu obtiendras plus de réponses... en tout cas moi, ça ne me donne pas envie de répondre, mais enfin... je fais un effort, si tu en fais un à l'avenir ;)

Il existe des classes toutes faites pour ce genre de problèmes

http://www.phpclasses.org/browse/package/951.html

Elle permet de créer tes BBCode et de les parser...

Maintenant si tu veux vraiment utiliser le code que tu as posté, regarde du côté des appel à la fonction preg_replace ... en l'occurrence, il y a deux tableaux $search et $replace ... dans le premier tu trouve toutes les expressions régulières pour les BBCode qui sont simple (composé de deux balises et éventuellement un paramètre : QUOTE, CODE, URL, ...) ...et dans le deuxième il y a ce par quoi chaque morceau de texte correspondant à l'expression régulière sera remplacé...

A toi d'ajouter l'expression régulière qui correspond à tes besoins et le code HTML par quoi il faudra remplacer les morceaux de texte.

Lien vers le commentaire
Partager sur d’autres sites

A noter que faire une balise <marquee> est un peu dommage vu que c'est une balise propre a internet explorer, cependant tu peut tres bien en faire une qui te retourne un equivalent en js, tu trouveras facilemennt le script qu'il te faut ici.

(enfin, d'un autre cote ta fonction n'a pas l'air motivee pour creer du code valide)

Bonne chance.

iLUV

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...