par
Fre3z69 » 02 janv. 2012, 00:56
Salutation
Bonne année à tous
Voici que j'ai de nouveau un soucis
En effet, je souhaite créer un bbcode, plus pour apprendre qu'autre chose, mais je pourrais ainsi l'utiliser sur mes site pour la mise en page sans html dans les textarea.)
bref, j'ai longtemps chercher sur le net avant de venir poster ici, et voici le sujet:
J'aimerais savoir comment traiter dans le texte (sur la page qui affiche le résultat d'une requête sql permettant d'afficher un message ou autre) la structure des listes ordonnée ou non ordonnées.
voici à quoi ressemble le bbcode (c le même que phpbb)
Code : Tout sélectionner
liste ordonnée
[list=option]
[*]liste 1
[*]liste 2
[*]liste 3
[/list]
Liste non ordonnée
[list]
[*]liste 1
[*]liste 2
[*]liste 3
[/list]
Ce qui doit m'afficher:
liste ordonnée
<ol style="option">
<li>liste 1</li>
<li>liste 2</li>
<li>liste 3</li>
</ol>
Liste non ordonnée
<ul>
<li>liste 1</li>
<li>liste 2</li>
<li>liste 3</li>
</ul>
Je sais que je vais devoir utiliser des regex, alors pour vous permettre de comprendre comment je traite mon bbcode, voici le script de ma fonction php
Code : Tout sélectionner
<?php
// Fonction BBcode
function code($texte)
{
//Smileys
$texte = str_replace(':D ', '<img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" />', $texte);
$texte = str_replace(':lol: ', '<img src="./images/smileys/lol.gif" title="lol" alt="lol" />', $texte);
$texte = str_replace(':triste:', '<img src="./images/smileys/triste.gif" title="triste" alt="triste" />', $texte);
$texte = str_replace(':frime:', '<img src="./images/smileys/cool.gif" title="cool" alt="cool" />', $texte);
$texte = str_replace(':rire:', '<img src="./images/smileys/rire.gif" title="rire" alt="rire" />', $texte);
$texte = str_replace(':s', '<img src="./images/smileys/confus.gif" title="confus" alt="confus" />', $texte);
$texte = str_replace(':O', '<img src="./images/smileys/choc.gif" title="choc" alt="choc" />', $texte);
$texte = str_replace(':question:', '<img src="./images/smileys/question.gif" title="?" alt="?" />', $texte);
$texte = str_replace(':exclamation:', '<img src="./images/smileys/exclamation.gif" title="!" alt="!" />', $texte);
//Mise en forme du texte
//gras
$texte = preg_replace('`\[g\](.+)\[/g\]`isU', '<strong>$1</strong>', $texte);
$texte = preg_replace('`\[b\](.+)\[/b\]`isU', '<strong>$1</strong>', $texte);
//italique
$texte = preg_replace('`\[i\](.+)\[/i\]`isU', '<em>$1</em>', $texte);
//souligné
$texte = preg_replace('`\[s\](.+)\[/s\]`isU', '<u>$1</u>', $texte);
//alignement justifié
$texte = preg_replace('`\[justify\](.+)\[/justify\]`isU', '<div style="text-align:justify;">$1</div>', $texte);
//alignement centré
$texte = preg_replace('`\[center\](.+)\[/center\]`isU', '<div style="text-align:center;">$1</div>', $texte);
//alignement doit
$texte = preg_replace('`\[right\](.+)\[/right\]`isU', '<div style="text-align:right;margin:0px;padding:0px;">$1</div>', $texte);
//alignement gauche
$texte = preg_replace('`\[left\](.+)\[/left\]`isU', '<div style="text-align:left;margin:0px;padding:0px;">$1</div>', $texte);
//titre
$texte = preg_replace('`\[titre\](.+)\[/titre\]`isU', '<h3>$1</h3>',$texte);
//email
$texte = preg_replace('`\[email\](.+)\[/email\]`isU', '<a href="mailto:$1">$1</a>',$texte);
//image
$texte = preg_replace('`\[img\](.+)\[/img\]`isU', '<img src="$1" border="0">',$texte);
//lien
$texte = preg_replace("#\[url\]((ht|f)tp://)([^\r\n\t<\"]*?)\[/url\]#sie", "'<a href=\"\\1' . str_replace(' ', '%20', '\\3') . '\" target=\"blank\">\\1\\3</a>'", $texte);
$texte = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/", "<a href=\"$1\" target=\"blank\">$2</a>", $texte);
//citation
$texte = preg_replace('`\[quote auteur=([a-z0-9A-Z._-]+) \](.+)\[/quote\]`isU', '<div id="quote">Auteur : $1 <br /> $2 </div>', $texte);
$texte = preg_replace('`\[quote](.+)\[/quote\]`isU', '<div id="quote">Citation : <br />$1</div>', $texte);
//Sploiler
$texte = preg_replace('`\[spoiler](.+)\[/spoiler\]`isU', "<dl class=\"codebox\"><span style=\"cursor:pointer;\" onclick=\"var elementmode = this.getElementsByTagName('span');for(var i=0;i<elementmode.length;i++){if(elementmode[i].title == 'Afficher'){elementmode[i].style.display=(!elementmode[i].style.display)?'none':'';}}\"><dt class=\"codebox\">Afficher</dt><span title=\"Afficher\" style=\"display:none;cursor:text;\">$1</span></span></dl>", $texte);
//code
$texte = preg_replace('`\[code](.+)\[/code\]`isU', '<dl class=codebox><dt class="codebox">Code: <a title="Tout sélectionner" style="cursor:pointer;" onclick=selectCode(this); return false;>Tout sélectionner</a></dt><dd><code>$1</code></dd></dl>', $texte);
//etc., etc.
//On retourne la variable texte
return $texte;
}
?>
Merci pour votre aide.
Cordialement
Salutation
Bonne année à tous
Voici que j'ai de nouveau un soucis
En effet, je souhaite créer un bbcode, plus pour apprendre qu'autre chose, mais je pourrais ainsi l'utiliser sur mes site pour la mise en page sans html dans les textarea.)
bref, j'ai longtemps chercher sur le net avant de venir poster ici, et voici le sujet:
J'aimerais savoir comment traiter dans le texte (sur la page qui affiche le résultat d'une requête sql permettant d'afficher un message ou autre) la structure des listes ordonnée ou non ordonnées.
voici à quoi ressemble le bbcode (c le même que phpbb)
[code]liste ordonnée
[list=option]
[*]liste 1
[*]liste 2
[*]liste 3
[/list]
Liste non ordonnée
[list]
[*]liste 1
[*]liste 2
[*]liste 3
[/list]
Ce qui doit m'afficher:
liste ordonnée
<ol style="option">
<li>liste 1</li>
<li>liste 2</li>
<li>liste 3</li>
</ol>
Liste non ordonnée
<ul>
<li>liste 1</li>
<li>liste 2</li>
<li>liste 3</li>
</ul>[/code]
Je sais que je vais devoir utiliser des regex, alors pour vous permettre de comprendre comment je traite mon bbcode, voici le script de ma fonction php
[code=php]<?php
// Fonction BBcode
function code($texte)
{
//Smileys
$texte = str_replace(':D ', '<img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" />', $texte);
$texte = str_replace(':lol: ', '<img src="./images/smileys/lol.gif" title="lol" alt="lol" />', $texte);
$texte = str_replace(':triste:', '<img src="./images/smileys/triste.gif" title="triste" alt="triste" />', $texte);
$texte = str_replace(':frime:', '<img src="./images/smileys/cool.gif" title="cool" alt="cool" />', $texte);
$texte = str_replace(':rire:', '<img src="./images/smileys/rire.gif" title="rire" alt="rire" />', $texte);
$texte = str_replace(':s', '<img src="./images/smileys/confus.gif" title="confus" alt="confus" />', $texte);
$texte = str_replace(':O', '<img src="./images/smileys/choc.gif" title="choc" alt="choc" />', $texte);
$texte = str_replace(':question:', '<img src="./images/smileys/question.gif" title="?" alt="?" />', $texte);
$texte = str_replace(':exclamation:', '<img src="./images/smileys/exclamation.gif" title="!" alt="!" />', $texte);
//Mise en forme du texte
//gras
$texte = preg_replace('`\[g\](.+)\[/g\]`isU', '<strong>$1</strong>', $texte);
$texte = preg_replace('`\[b\](.+)\[/b\]`isU', '<strong>$1</strong>', $texte);
//italique
$texte = preg_replace('`\[i\](.+)\[/i\]`isU', '<em>$1</em>', $texte);
//souligné
$texte = preg_replace('`\[s\](.+)\[/s\]`isU', '<u>$1</u>', $texte);
//alignement justifié
$texte = preg_replace('`\[justify\](.+)\[/justify\]`isU', '<div style="text-align:justify;">$1</div>', $texte);
//alignement centré
$texte = preg_replace('`\[center\](.+)\[/center\]`isU', '<div style="text-align:center;">$1</div>', $texte);
//alignement doit
$texte = preg_replace('`\[right\](.+)\[/right\]`isU', '<div style="text-align:right;margin:0px;padding:0px;">$1</div>', $texte);
//alignement gauche
$texte = preg_replace('`\[left\](.+)\[/left\]`isU', '<div style="text-align:left;margin:0px;padding:0px;">$1</div>', $texte);
//titre
$texte = preg_replace('`\[titre\](.+)\[/titre\]`isU', '<h3>$1</h3>',$texte);
//email
$texte = preg_replace('`\[email\](.+)\[/email\]`isU', '<a href="mailto:$1">$1</a>',$texte);
//image
$texte = preg_replace('`\[img\](.+)\[/img\]`isU', '<img src="$1" border="0">',$texte);
//lien
$texte = preg_replace("#\[url\]((ht|f)tp://)([^\r\n\t<\"]*?)\[/url\]#sie", "'<a href=\"\\1' . str_replace(' ', '%20', '\\3') . '\" target=\"blank\">\\1\\3</a>'", $texte);
$texte = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/", "<a href=\"$1\" target=\"blank\">$2</a>", $texte);
//citation
$texte = preg_replace('`\[quote auteur=([a-z0-9A-Z._-]+) \](.+)\[/quote\]`isU', '<div id="quote">Auteur : $1 <br /> $2 </div>', $texte);
$texte = preg_replace('`\[quote](.+)\[/quote\]`isU', '<div id="quote">Citation : <br />$1</div>', $texte);
//Sploiler
$texte = preg_replace('`\[spoiler](.+)\[/spoiler\]`isU', "<dl class=\"codebox\"><span style=\"cursor:pointer;\" onclick=\"var elementmode = this.getElementsByTagName('span');for(var i=0;i<elementmode.length;i++){if(elementmode[i].title == 'Afficher'){elementmode[i].style.display=(!elementmode[i].style.display)?'none':'';}}\"><dt class=\"codebox\">Afficher</dt><span title=\"Afficher\" style=\"display:none;cursor:text;\">$1</span></span></dl>", $texte);
//code
$texte = preg_replace('`\[code](.+)\[/code\]`isU', '<dl class=codebox><dt class="codebox">Code: <a title="Tout sélectionner" style="cursor:pointer;" onclick=selectCode(this); return false;>Tout sélectionner</a></dt><dd><code>$1</code></dd></dl>', $texte);
//etc., etc.
//On retourne la variable texte
return $texte;
}
?>
[/code]
Merci pour votre aide.
Cordialement