Eléphant du PHP |
180 Messages
27 janv. 2006, 23:14
@VaN
Voila un exemple complet.
J'ai développé ça dans le cadre d'une messagerie interne d'un projet sur lequel je bosse. Ce code fonctionne avec autant de niveaux de citation que le message en comporte. Il fonctionne aussi avec les citations non nominatives.
Ex :
Avec un peu de chance, ça devrait pouvoir s'intégrer dans ce que tu as développé pour toi.
Code : Tout sélectionner
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.citation{
margin:10px;
padding:10px;
border:1px solid #000;
background-color:#FFF;
}
.auteur {
font-weight:bold;
margin:10px;
}
-->
</style>
</head>
<body>
<?php
$message_brut='[quote="toto"]hello, tu connais "phpfrance" ?[/quote]
ben oui "et toi" ?
A+
Didier'; // ça c'est le message que te renvoie ta base de données
$bbcode=array(
"[quote]" => "<div class=\"citation\">",
"[/quote]" => "</div>",
"[b]" => "<strong>",
"[/b]" => "</strong>",
"[i]" => "<em>",
"[/i]" => "</em>",
"[u]" => "<u>",
"[/u]" => "</u>"
);
////////////////////////////////////////// pour les citations /////////////////////
preg_match_all("|quote="(.*)"|U",$message_brut,$out,PREG_PATTERN_ORDER); // recup d'un tableau associatif $out -> pour les citations // voir php.net pour toutes les explications ;-)
for($i=0;$i<count($out[1]);$i++)
{
$bbcode["[quote="".$out[1][$i].""]" ] = '<span class="auteur">'.$out[1][$i].' a écrit :</span><div class="citation">'; // fabrication à la volée du bbcode qui va bien ;-)
}
$print_message = str_replace(array_keys($bbcode), array_values($bbcode), $message_brut); // on mouline le message brut ou le bbcode sera remplace par du html
echo '<p>'.nl2br($print_message).'</p>'; // on affiche le resultat
?>
</body>
</html>
J'espère que ça t'aide un minimum.
N'hésites pas à me contacter si tu as besoin
A+
Didier
Giant steps are what you take ... walking on the moon
