Création d'une fonction BB-Code

Kronikerz Messages postés 18 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 10 septembre 2010 - 22 juin 2010 à 21:20
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 27 juin 2010 à 10:11
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

mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
26 juin 2010 à 18:41
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);
0
Kronikerz Messages postés 18 Date d'inscription vendredi 11 juin 2010 Statut Membre Dernière intervention 10 septembre 2010
26 juin 2010 à 23:11
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ù.
0
mailliam Messages postés 261 Date d'inscription mardi 2 juillet 2002 Statut Membre Dernière intervention 10 mars 2014 3
27 juin 2010 à 08:50
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
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
27 juin 2010 à 10:11
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 -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
27 juin 2010 à 10:11
Sinon il y a les regex.



Kohntark -
0
Rejoignez-nous