begin process at 2012 02 15 18:59:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > COMPILATEUR/DÉCOMPILATEUR DE BCODE

COMPILATEUR/DÉCOMPILATEUR DE BCODE


 Information sur la source

Note :
6,67 / 10 - par 6 personnes
6,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Niveau :Débutant Date de création :27/04/2003 Date de mise à jour :29/04/2003 22:55:35 Vu / téléchargé :5 088 / 235

Auteur : Wize

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Ces fonctions servent a convertir un texte avec du BCode en code HTML et inverssement.
Le BCode, pour balise code, que j'ai utilisé est très fortement inspiré du célèbre BBCode de phppBB, il permet simplement et rapidement de donner vie aux news et tutos de votre site, en utilisant un code de balise simple lors de la saisie coté administrateur

A appeller avant chaque ajout ou modification d'une news ou tuto dans la base de données, et inverssement à l'édition coté administrateur.

il ne vous reste plus qu'a créer la page d'ajout de news approprié :)      

Source

  • <?
  • // Fonction qui transforme un texte avec du BCode en texte avec du code HTML
  • function compile($corps) {
  • // Permet de gérer les espaces avant un caractère, en debut de texte
  • // cette fonction va chercher le nombre d'espace et les remplacerer par '&nbsp; autant de fois qu'il le faut.
  • $corps=preg_replace('/^( +)(\S{1})/e', "str_repeat('&nbsp;',strlen('\\1')).'\\2'", $corps);
  • // De même, mais pour chaque debut de phrase en debut de phrase
  • $corps=preg_replace('/\n(\ *)(\S?)/e', "'<br>'.str_repeat('&nbsp;',strlen('\\1')).'\\2'", $corps);
  • // Permet de remplacer les balises de gras, par l'équivalent en HTML : [b]texte[/b]
  • $corps=str_replace('[b]', '<b>', $corps);
  • $corps=str_replace('[/b]', '</b>', $corps);
  • // De même pour l'italique : [i]texte[/i]
  • $corps=str_replace('[i]', '<i>', $corps);
  • $corps=str_replace('[/i]', '</i>', $corps);
  • // De même pour le soulignement : [s]texte[/s]
  • $corps=str_replace('[s]', '<u>', $corps);
  • $corps=str_replace('[/s]', '</u>', $corps);
  • // Permet de remplacer les balises de citation par une mise en forme adéquate : [quote]texte[/quote]
  • $corps=str_replace('[quote]', '<br><i>Citation<br>&nbsp;&nbsp;&nbsp;&nbsp;', $corps);
  • $corps=str_replace('[/quote]', '<br>/Citation</i><br>', $corps);
  • // Permet de remplacer les balises de couleur par du code HTML approprié : [color=COULEUR]texte[/color]
  • $corps=preg_replace('/\[color=(\w+)\]/', '<font color="\\1">', $corps);
  • $corps=str_replace('[/color]', '</font>', $corps);
  • // Permet de remplacer la balise image : [img]URL image[/img]
  • $corps=preg_replace('/\[img\](.+)\[\/img\]/', '<img src="\\1" align="center">', $corps);
  • // permet de remplacer la balise URL par un lien HTML
  • // 2 methodes differentes : [url]URL[/url] ou [url=URL]Texte[url]
  • $corps=preg_replace('/\[url\](http:\/\/|)(.+)\[\/url\]/', '<a href="http://\\2" target="_blank" class="corps">\\2</a>', $corps);
  • $corps=preg_replace('/\[url=(http:\/\/|)(.+)\](.+)\[\/url\]/', '<a href="http://\\2" target="_blank" class="corps">\\3</a>', $corps);
  • //permet de remplacer le code d'un smilie par l'image correspondante
  • $corps=str_replace(':D', '<img width="20" height="20" src="smilies/happy.gif">', $corps);
  • $corps=str_replace(':)', '<img width="20" height="20" src="smilies/smile.gif">', $corps);
  • $corps=str_replace(':p', '<img width="20" height="20" src="smilies/notify.gif">', $corps);
  • $corps=str_replace(';)', '<img width="20" height="20" src="smilies/winkin.gif">', $corps);
  • $corps=str_replace(':lol:', '<img width="20" height="20" src="smilies/lol.gif">', $corps);
  • $corps=str_replace('$)', '<img width="20" height="20" src="smilies/cool.gif">', $corps);
  • $corps=str_replace('8)', '<img width="20" height="20" src="smilies/blink.gif">', $corps);
  • $corps=str_replace(':|', '<img width="20" height="20" src="smilies/hmm.gif">', $corps);
  • $corps=str_replace(':?', '<img width="20" height="20" src="smilies/whatsthat.gif">', $corps);
  • $corps=str_replace(':(', '<img width="20" height="20" src="smilies/mad.gif">', $corps);
  • $corps=str_replace(':[', '<img width="20" height="20" src="smilies/bad.gif">', $corps);
  • return $corps;
  • }
  • // Fonction qui transforme un texte avec du code HTML en texte avec du BCode a l'instar de la première fonction
  • function decompile($corps) {
  • $corps=preg_replace('/^(&nbsp;+)(\S{1})/e', "str_repeat(' ',(strlen('\\1')/6)).'\\2'", $corps);
  • $corps=preg_replace('/<br>(&nbsp;*)(\S?)/e', "str_repeat(' ',(strlen('\\1')/6)).'\\2'", $corps);
  • $corps=str_replace('<br>', '', $corps);
  • $corps=str_replace('<br><i>Citation<br>&nbsp;&nbsp;&nbsp;&nbsp;', '[quote]', $corps);
  • $corps=str_replace('<br>/Citation</i><br>', '[/quote]', $corps);
  • $corps=str_replace('<b>', '[b]', $corps);
  • $corps=str_replace('</b>', '[/b]', $corps);
  • $corps=str_replace('<i>', '[i]', $corps);
  • $corps=str_replace('</i>', '[/i]', $corps);
  • $corps=str_replace('<u>', '[s]', $corps);
  • $corps=str_replace('</u>', '[/s]', $corps);
  • $corps=preg_replace('/<font color="(\w+)">/', '[color=\\1]', $corps);
  • $corps=str_replace('</font>', '[/color]', $corps);
  • $corps=preg_replace('/<img src="(.+)" align="center">/', '[img]\\1[/img]', $corps);
  • $corps=preg_replace('/<a href="http:\/\/(.+)" target="_blank" class="corps">(.+)<\/a>/', '[url=http://\\1]\\2[/url]', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/happy.gif">', ':D', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/smile.gif">', ':)', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/notify.gif">', ':p', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/winkin.gif">', ';)', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/lol.gif">', ':lol:', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/cool.gif">', '$)', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/blink.gif">', '8)', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/hmm.gif">', ':|', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/whatsthat.gif">', ':?', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/mad.gif">', ':(', $corps);
  • $corps=str_replace('<img width="20" height="20" src="smilies/bad.gif">', ':[', $corps);
  • return $corps;
  • }
  • // \w : [0-9a-zA-z]
  • // . : n'impporte quels caracteres sauf \n
  • // + : 1 ou plusieurs fois
  • // * : 0 ou plusieurs fois
  • // \ :echape
  • // \S : n'impporte quels caracteres sauf \n, \t, \r
  • // {1} : un et un seul
  • ?>
<?

// Fonction qui transforme un texte avec du BCode en texte avec du code HTML
function compile($corps) {
	// Permet de gérer les espaces avant un caractère, en debut de texte
	// cette fonction va chercher le nombre d'espace et les remplacerer par '&nbsp; autant de fois qu'il le faut.
	$corps=preg_replace('/^( +)(\S{1})/e', "str_repeat('&nbsp;',strlen('\\1')).'\\2'", $corps);
	// De même, mais pour chaque debut de phrase en debut de phrase
	$corps=preg_replace('/\n(\ *)(\S?)/e', "'<br>'.str_repeat('&nbsp;',strlen('\\1')).'\\2'", $corps);
	// Permet de remplacer les balises de gras, par l'équivalent en HTML : [b]texte[/b]
	$corps=str_replace('[b]', '<b>', $corps);
	$corps=str_replace('[/b]', '</b>', $corps);
	// De même pour l'italique : [i]texte[/i]
	$corps=str_replace('[i]', '<i>', $corps);
	$corps=str_replace('[/i]', '</i>', $corps);
	// De même pour le soulignement : [s]texte[/s]
	$corps=str_replace('[s]', '<u>', $corps);
	$corps=str_replace('[/s]', '</u>', $corps);
	// Permet de remplacer les balises de citation par une mise en forme adéquate : [quote]texte[/quote]
	$corps=str_replace('[quote]', '<br><i>Citation<br>&nbsp;&nbsp;&nbsp;&nbsp;', $corps);
	$corps=str_replace('[/quote]', '<br>/Citation</i><br>', $corps);
	// Permet de remplacer les balises de couleur par du code HTML approprié : [color=COULEUR]texte[/color]
	$corps=preg_replace('/\[color=(\w+)\]/', '<font color="\\1">', $corps);
	$corps=str_replace('[/color]', '</font>', $corps);
	// Permet de remplacer la balise image : [img]URL image[/img]
	$corps=preg_replace('/\[img\](.+)\[\/img\]/', '<img src="\\1" align="center">', $corps);
	// permet de remplacer la balise URL par un lien HTML
	// 2 methodes differentes : [url]URL[/url] ou [url=URL]Texte[url]
	$corps=preg_replace('/\[url\](http:\/\/|)(.+)\[\/url\]/', '<a href="http://\\2" target="_blank" class="corps">\\2</a>', $corps);
	$corps=preg_replace('/\[url=(http:\/\/|)(.+)\](.+)\[\/url\]/', '<a href="http://\\2" target="_blank" class="corps">\\3</a>', $corps);
	//permet de remplacer le code d'un smilie par l'image correspondante
	$corps=str_replace(':D', '<img width="20" height="20" src="smilies/happy.gif">', $corps);
	$corps=str_replace(':)', '<img width="20" height="20" src="smilies/smile.gif">', $corps);
	$corps=str_replace(':p', '<img width="20" height="20" src="smilies/notify.gif">', $corps);
	$corps=str_replace(';)', '<img width="20" height="20" src="smilies/winkin.gif">', $corps);
	$corps=str_replace(':lol:', '<img width="20" height="20" src="smilies/lol.gif">', $corps);
	$corps=str_replace('$)', '<img width="20" height="20" src="smilies/cool.gif">', $corps);
	$corps=str_replace('8)', '<img width="20" height="20" src="smilies/blink.gif">', $corps);
	$corps=str_replace(':|', '<img width="20" height="20" src="smilies/hmm.gif">', $corps);
	$corps=str_replace(':?', '<img width="20" height="20" src="smilies/whatsthat.gif">', $corps);
	$corps=str_replace(':(', '<img width="20" height="20" src="smilies/mad.gif">', $corps);
	$corps=str_replace(':[', '<img width="20" height="20" src="smilies/bad.gif">', $corps);
	
	return $corps;
}

// Fonction qui transforme un texte avec du code HTML en texte avec du BCode a l'instar de la première fonction
function decompile($corps) {
	$corps=preg_replace('/^(&nbsp;+)(\S{1})/e', "str_repeat(' ',(strlen('\\1')/6)).'\\2'", $corps);
	$corps=preg_replace('/<br>(&nbsp;*)(\S?)/e', "str_repeat(' ',(strlen('\\1')/6)).'\\2'", $corps);
	$corps=str_replace('<br>', '', $corps);
	$corps=str_replace('<br><i>Citation<br>&nbsp;&nbsp;&nbsp;&nbsp;', '[quote]', $corps);
	$corps=str_replace('<br>/Citation</i><br>', '[/quote]', $corps);
	$corps=str_replace('<b>', '[b]', $corps);
	$corps=str_replace('</b>', '[/b]', $corps);
	$corps=str_replace('<i>', '[i]', $corps);
	$corps=str_replace('</i>', '[/i]', $corps);
	$corps=str_replace('<u>', '[s]', $corps);
	$corps=str_replace('</u>', '[/s]', $corps);
	$corps=preg_replace('/<font color="(\w+)">/', '[color=\\1]', $corps);
	$corps=str_replace('</font>', '[/color]', $corps);
	$corps=preg_replace('/<img src="(.+)" align="center">/', '[img]\\1[/img]', $corps);
	$corps=preg_replace('/<a href="http:\/\/(.+)" target="_blank" class="corps">(.+)<\/a>/', '[url=http://\\1]\\2[/url]', $corps);
	
	$corps=str_replace('<img width="20" height="20" src="smilies/happy.gif">', ':D', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/smile.gif">', ':)', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/notify.gif">', ':p', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/winkin.gif">', ';)', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/lol.gif">', ':lol:', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/cool.gif">', '$)', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/blink.gif">', '8)', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/hmm.gif">', ':|', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/whatsthat.gif">', ':?', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/mad.gif">', ':(', $corps);
	$corps=str_replace('<img width="20" height="20" src="smilies/bad.gif">', ':[', $corps);
	
	return $corps;
}

// \w : [0-9a-zA-z] 
// . : n'impporte quels caracteres sauf \n 
// + : 1 ou plusieurs fois
// * : 0 ou plusieurs fois
// \ :echape
// \S : n'impporte quels caracteres sauf \n, \t, \r
// {1} : un et un seul

?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

Commentaires et avis

Commentaire de Wize le 29/04/2003 22:59:36

voila le code est dispo sur le site
si vous avez besoin de plus de détails, n'hésitez pas a demander

en esperant que ça va servir à certain :)

Commentaire de i0Lo le 24/05/2003 12:25:06

mmmmm trés sympa surtout qu'on peut faire même un blocage des codes  HMTL et PHP dans une zone de texte ( sachant que les trucs en javascripts sont pas beaux :
Une bonne source , trés appréciable et qui m'a beaucoup servi . 10/10

Commentaire de Ofal le 05/06/2003 10:00:10

une amélioration serai de remplacer :
    $corps=str_replace('[b]', '&lt;b&gt;', $corps);
    $corps=str_replace('[/b]', '&lt;/b&gt;', $corps);

par un :

preg_replace

qui par concéquent remplacera que si la balise commencé est fermé


et puis , à l époque du php 4 , les \2 peuvent se remplacer par $2 ( ce qui est a mon avis plus lisible )


c est cependant un très bon script , j ai fait a peu pres le meme il y a 2 semaines de ca ....


par contre , j arrive pas a ne pas transformer les smiley qui sont entre deux balise [url]... ( et à voir ce script , toi nonplus ) ...

si tu y arrive , ca serai de la pure bombe de me dire comment ( en replyant a ce message par exemple .. )

Commentaire de Wize le 05/06/2003 11:23:14

merci i0lo :)

pour Ofal, il est vrai que des preg seraient mieux, j'y avais pas passé a le jour et pour les $ aussi.
il faut dire que j'ai crée ce script, sans meme connaitre les fonctions de remplacement ( a part str_replace) et encore moins les expressions reguliere.
je sais ce que je vais faire pour la mise jour :D

en ce qui concerne l'url, j'ai le meme probleme, et c'est pour cela que dans mon cas, j'ai choisi un codage des smilies, qui ne pourons jamais etre integré dans une url.
il y a tjrs un deux points ou une parenthese.
voila c'est la seul solution que je peux te proposer, a part verifier a chaqe fois si le code n'est pas dans une balise url !!!! (lourd a gerer)

merci pour les commentaires

Commentaire de kzimir666 le 27/06/2003 17:16:49

Je trouve ce code génial, mais j'ai un problème avec... quand je met pluisieurs liens du type : [url]MONLIEN[/url] ou encore [url=MONLIEN]LELIEN[/url] à la suite, et bien le résultat donne n'importe koi... Je ne vois pas comment corriger... et je ne sais pas d'où viens le problème, il faut dire que je ne connais pas bien la fonction preg_replace()
Si kelkun pouvait m'aider...

Commentaire de montoya le 22/10/2003 11:49:02

J'ai trouvé le petit défault :
Il faut remplacer ca :

$corps=preg_replace('/[url](http://|)(.+)[/url]/', '&lt;a href="http://\2" target="_blank" class="corps"&gt;\2&lt;/a&gt;', $corps);
    $corps=preg_replace('/[url=(http://|)(.+)](.+)[/url]/', '&lt;a href="http://\2" target="_blank" class="corps"&gt;\3&lt;/a&gt;', $corps);

Par :

$corps = preg_replace('/[url](.+?)[/url]/','&lt;a href="\1" target="_blanck" class="TEXTBLANC"&gt;\1&lt;/a&gt;',$corps);
$corps = preg_replace('/[url=(.+?)](.+?)[/url]/','&lt;a href="\1" target="_blank" class="TEXTBLANC"&gt;\2&lt;/a&gt;',$corps);

Et là, ca marche super bien !!!!!
@+

Commentaire de apz le 29/02/2004 23:33:12

Mais quelle est la fonction pour ajouter des balises BBCode dans le texte ?

par exemple rendre texte en &lt;b&gt;texte&lt;/b&gt;

Commentaire de montoya le 06/03/2004 15:08:27

comprends po ta question.

Commentaire de apz le 06/03/2004 17:02:58

je m'explique :

Quand on selectionne un texte dans le textearea, pour lui appliquer les balises BBCode tels que : [bold]texte[/blod] ou [italic]texte[/italic] ou [code]texte[/code], il y a une fonction qui fasse cela !

alors comment elle doir etre ?

merci.

Commentaire de spiderAlpha le 05/04/2004 21:04:06

Salut,
je trouve ton code exellent, mais comme dit plus haut, il y a un probléme avec les URL lorsqu'elles sont multiples.

Le code donné par montoya pour le corriger ne fonctionne pas, il retourne les erreurs suivantes :

Unknown modifier 'r' ......

Quel est donc le code à mettre pour supporter les deux types d'URL dans une même zone de texte ?

Merci

Commentaire de montoya le 05/04/2004 21:51:05

Bonsoir à tous.

Pour apz je ne vois pas.

Pour spiderAlpha voila un autre bout de code qui permet la transformation et qui devrai fonctioner :
$corp = preg_replace("/\[url\](.*?)\[\/url\]/si","&lt;a href=\"\\1\" target=\"_blank\"&gt;\\1&lt;/a&gt;",$corp);
$corp = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/si","&lt;a href=\"\\1\" target=\"_blank\"&gt;\\2&lt;/a&gt;",$corp);

++

Commentaire de Bensor le 29/06/2004 11:26:14

hmm j'ai pesque fait la même chose, mais je bloquais sur les liens. Je n'ai pas encore essayé de faire fonctionner tout ça, mais ça m'a l'air assez bien. 9/10 (il parait que y'a un petit problème dans ton code) :)

Commentaire de coucou747 le 30/11/2005 17:45:42 administrateur CS

un compilateur produit un binaire...

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales