Ecrire un parser rudimentaire

Ecrire un parser rudimentaire - PHP - Programmation

Marsh Posté le 18-02-2007 à 01:28:57    

Bonjour à toutes et à tous.
 
Pour mon site, j'ai besoin d'écrire un parser rudimentaire ( bbcode simplifié ).
 
Etant ignare sur le sujet, comment dois-je m'y prendre ? Etant donné que je n'aurai pas de "bbcode à paramètres", est-ce que je peux éviter de me taper un cours sur les regex ? exemple :
Je n'aurai pas de balise [ size = nn ] mais plutot [ titre ], [ ss-titre ] etc...
 
Le but, vous l'aurez compris, est de ne pas avoir à me farcir un fichier .php à chaque inclusion de page.
 
Merci de vos avis éclairés.

Reply

Marsh Posté le 18-02-2007 à 01:28:57   

Reply

Marsh Posté le 18-02-2007 à 01:59:45    

Après quelques recherches et quelques modifs, je reste la dessus:
 

Code :
  1. function parseBbcode($text, $classe = '')
  2. {
  3.         // $classe : classe CSS utilisée pour les liens.
  4.         // [img], [url], [url=]
  5.     $text = preg_replace("#\[img\]((ht|f)tp://)([^\r\n\t<\"]*?)\[/img\]#sie", "'<img src=\\1' . str_replace(' ', '%20', '\\3') . '>'", $text);
  6.     $text = preg_replace("#\[url\]((ht|f)tp://)([^\r\n\t<\"]*?)\[/url\]#sie", "'<a class='$classe' href=\"\\1' . str_replace(' ', '%20', '\\3') . '\" target=blank>\\1\\3</a>'", $text);
  7.     $text = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/", "<a class='$classe' href=$1>$2</a>", $text);
  8.  
  9.         // Fragments de code source
  10.     $text = preg_replace("#\[code\](.+?)\[\/code\]#s", "<div class='code'><pre class='code'>$1</pre></div>", $text);
  11.         // Gras, Italique, Souligné
  12.     $text = preg_replace("#\[b\](.+?)\[\/b\]#", "<b>$1</b>", $text);
  13.     $text = preg_replace("#\[i\](.+?)\[\/i\]#", "<i>$1</i>", $text);
  14.     $text = preg_replace("#\[u\](.+?)\[\/u\]#", "<u>$1</u>", $text);
  15.         // Fin du parser
  16.     return $text;
  17. }


 
Si ca sert a quelqun, tant mieux, en tous cas mon problème est résolu

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed