Création d'une fonction BB-Code

Signaler
Messages postés
18
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
10 septembre 2010
-
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
Hello à toutes et tous,

Aujourd'hui j'ai décidé de m'entrainer sur la création d'une fonction de choix, celle de la notation d'une chaîne BBCode en chaine HTML. Sans être absolument sûre que cela soit la meilleure façon de procéder.

En clair, je souhaite transformer cela
en cela (Facile hein ? )

ou encore ceci
['http://xxxxx.com' Site de ouf]
en ceci Site de ouf

ou encore
code-source
en xxxxx


Les morceaux de BBCode autorisés étant:
[b]
[i]
[u]
[p]
[url]
[size]

Voilà déjà ce que j'ai commencé, mais dont je n'arrive pas à finir pour [url] et [size] :
function bbCode($char, $contenu){
$chars = explode("-", $char);
for($i=0; $i<count($chars); $i++ ){
$contenu = str_replace("[".$chars[$i]."]", "<".$chars[$i].">", $contenu); // [a] -> 
$contenu = str_replace("[/".$chars[$i]."]", "</".$chars[$i].">", $contenu); // /a -> 

if($chars[$i] == "size"){


$contenu = str_replace("/size", "", $contenu);

$num = explode("[size=", $contenu);

$contenu = str_replace("[size=".$num[1], "<font size=".$num[1], $contenu;
}
}
return $contenu;
}


Pour ma part, sans me casser le c.., le cerveau ! j'utilise ma fonction de cette façon à l'aide d'un explode() au tout début. (A chacun son savoir!)

bbCode("b-i-u-p-url-size", $contenu);


Cordialement,

-Kronikerz

5 réponses

Messages postés
261
Date d'inscription
mardi 2 juillet 2002
Statut
Membre
Dernière intervention
10 mars 2014
2
Tchô,

ce serait pas + simple de faire sous forme de tablo? je sais pas je me trompe peut etre, moi je ferais comme ca:

$avant array(' ',' ','[size10]');
$apres =  array(' ',' ','');
$contenu  = str_replace($avant,$apres,$contenu);
Messages postés
18
Date d'inscription
vendredi 11 juin 2010
Statut
Membre
Dernière intervention
10 septembre 2010

Hello Mailliam,

Pas con ton idée, toute fois elle me déplait un petit peu.

Par ex. pour "size", cela signifie qu'il faut créer une nouvelle "size" pour chaque taille différente. Moi j'aurais voulu juste récupérer le chiffre entré puis le placer à son emplacement final.

Sinon je vais obtenir quelque chose du genre:
$avant array(' ',' ','[size10]', '[size=11]', '[size=12]', etc.);


Merci toute fois de ton aide, je le garde de coté au cas où.
Messages postés
261
Date d'inscription
mardi 2 juillet 2002
Statut
Membre
Dernière intervention
10 mars 2014
2
ReTchô

Bin faut juste faire:
$avant = array('[size',']');
et $ apres$ = array('');
comme ca, ca remplace [size=10] par

Il me semble nan? mais c'est vrai que ca me semble compliqué, y a surement + simple
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

A mon avis tu n'emploies pas la bonne méthode.
Celle utilisée est trop simpliste, elle ne gère pas, par exemple, le contrôle de l'existence d'un tag d'ouverture ET de fermeture.
Attention également aux problèmes de sécurité : tel quel il doit être possible de faire un deface, voir même une redirection vers un autre site.

A voir peut être (jamais utilisé) :
http://fr.php.net/manual/en/intro.bbcode.php

Cordialement,

Kohntark -
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Sinon il y a les regex.



Kohntark -