Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DU BBCODE AU (X)HTML


Information sur la source

Catégorie :Chaîne de caratère Classé sous : bbcode, xhtml, html, forum Niveau : Débutant Date de création : 07/05/2005 Date de mise à jour : 25/01/2006 16:48:25 Vu : 11 795

Note :
8,92 / 10 - par 12 personnes
8,92 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (65)
Ajouter un commentaire et/ou une note

Description

Ce code permet d'utiliser du bbcode à la place du HTML, pour des raisons de sécurité et de simplicité pour les utilisateurs :)
Merci de noter que c'est mon premier code sur phpcs ^__^' (voir tout premier code publié <__<')
Pensez bien à prendre les balises <style></style> (configuration modifiable à souhait)

Merci de signaler si vous voyez d'autres balises à ajouter dans les commentaires si il le faut :-)
 

Source

  • <style>
  • .code {
  • border: 1px solid #657985;
  • padding-left: 10px;
  • background-color:#d3dbdf;
  • }
  • .quote {
  • border: 1px dotted #657985;
  • padding-left: 10px;
  • background-color:#eeeeee;
  • }
  • </style>
  • <?php
  • //By Talus
  • function parse_css($texte) {
  • $texte[1] = html_entity_decode($texte[1], true);
  • $texte[1] = preg_replace('`((.*)(:)(.*)(;))+`x','<span style="color: navy;">$2</span><span style="color: fuchsia;">$3</span><span style="color: blue;">$4</span><span style="color: fuchsia;">$5</span>', $texte[1]);
  • $texte[1] = preg_replace('`((.*) \n? {)`x','<span style="color: fuchsia;">$1</span>', $texte[1]);
  • $texte[1] = preg_replace('`(/\*(.*)\*/)`xs','<span style="color: gray;">$1</span>', $texte[1]);
  • $texte[1] = str_replace('}','<span style="color: fuchsia;">}</span>', $texte[1]);
  • $texte[1] = preg_replace('`<span style="color: (.*);">(.*)</span>`sU', '<span style="color:$1">[color=$1]$2[/color]</span>',$texte[1]);
  • $texte[1] = str_replace('\n','', $texte[1]);
  • $texte[1] = preg_replace('`(/\*\n?(.*)\n?\*/)`xsU','', $texte[1]);
  • return '<br /><strong>Code CSS</strong> :<br /><div class="code">' . $texte[1] . '</div><br />';
  • }
  • function php_code($code){ //Colorisation de Code PHP
  • return '<br /><div class="code_top">Script PHP :</div><div class="code_main">' . highlight_string(html_entity_decode($code[1]), true) . '</div><br />';
  • }
  • function forum_code($chaine,$xhtml = FALSE ){
  • /* Paramètre autorisant (ou non) le HTML dans la chaine $chaine, et autorisant les sauts de lignes*/
  • $chaine = nl2br(!$xhtml ? htmlentities($chaine) : $chaine);
  • // Bloc des balises [url]-[/url]
  • $chaine = preg_replace('`\[url=([http://].+?)](.+?)\[/url]`si','<a href="#" onclick="window.open(\'$1\',\'popup\');" title="$1">$2</a>',$chaine);
  • $chaine = preg_replace('`\[url=(.+?)](.+?)\[/url]`si','<a href="#" onclick="window.open(\'http://$1\',\'popup\');" title="$1">$2</a>',$chaine);
  • $chaine = preg_replace('`\[url]([http://].+?)\[/url]`si','<a href="#" onclick="window.open(\'$1\',\'popup\');" title="$1">$1</a>',$chaine);
  • $chaine = preg_replace('`\[url](.+?)\[/url]`si','<a href="#" onclick="window.open(\'http://$1\',\'popup\');" title="$1">$1</a>',$chaine);
  • // Bloc des balises [b]-[/b]
  • $chaine = preg_replace('#\[b](.+?)\[/b]#si','<strong>$1</strong>',$chaine);
  • // Bloc des balises [u]-[/u]
  • $chaine = preg_replace('#\[u](.+?)\[/u]#si','<span style="text-decoration:underline;">$1</span>',$chaine);
  • // Bloc des balises [i]-[/i]
  • $chaine = preg_replace('#\[i](.+?)\[/i]#si','<em>$1</em>',$chaine);
  • // Bloc des balises [strike]-[/strike]
  • $chaine = preg_replace('#\[strike](.+?)\[/strike]#si','<span style="text-decoration:line-through;">$1</span>',$chaine);
  • // Bloc des balises [overline]-[/overline]
  • $chaine = preg_replace('#\[overline](.+?)\[/overline]#si','<span style="text-decoration:overline;">$1</span>',$chaine);
  • // Bloc des balises [code]-[/code]
  • $chaine = preg_replace('#\[code](.+?)\[/code]#si','<br /><strong>div :</strong> :<br /><div class="div">$1</div><br />',$chaine);
  • $chaine = preg_replace_callback('#\[code=css](.+?)\[/code]#si','parse_css',$chaine);
  • $chaine = preg_replace_callback('#\[code=php](.+?)\[/code]#si','php_code',$chaine);
  • // Bloc des balises [quote]-[/quote]
  • $chaine = preg_replace('#\[quote=me](.+?)\[/quote]#si','<br /><strong>J\'ai écrit</strong> :<br/><div class="quote">$1 </div><br />',$chaine);
  • $chaine = preg_replace('#\[quote=(.+?)](.+?)\[/quote]#si','<br /><strong>$1 a écrit</strong> :<br/><div class="quote">$2 </div><br />',$chaine);
  • $chaine = preg_replace('#\[quote](.+?)\[/quote]#si','<br /><strong>Citation</strong> :<br/><div class="quote">$1 </div><br />',$chaine);
  • // Bloc des balises [img]-[/img]
  • $chaine = preg_replace('#\[img=(.+?)](.+?)\[/img]#si','<img src="$1" border="0" alt="$2" />',$chaine);
  • $chaine = preg_replace('#\[img](.+?)\[/img]#si','<img src="$1" border="0" />',$chaine);
  • // Bloc des balises [mail]-[/mail]
  • $chaine = preg_replace('#\[mail=([mailto:].+?)](.+?)\[/mail]#si','<a href="$1">$2</a>',$chaine);
  • $chaine = preg_replace('#\[mail=(.+?)](.+?)\[/mail]#si','<a href="mailto:$1">$2</a>',$chaine);
  • $chaine = preg_replace('#\[mail]([mailto:].+?)\[/mail]#si','<a href="$1">$1</a>',$chaine);
  • $chaine = preg_replace('#\[mail](.+?)\[/mail]#si','<a href="mailto:$1">$1</a>',$chaine);
  • // Bloc des balises [align]-[/align]
  • $chaine = preg_replace('#\[align=(left|center|right)](.+?)\[/align]#si','<div style="text-align:$1; width:100%;">$2</div>',$chaine);
  • // Bloc des balises [color]-[/color]
  • $chaine = preg_replace('#\[color=(.+?)](.+?)\[/color]#si','<span style="color:$1;">$2</span>',$chaine);
  • // Bloc des balises [size]-[/size]
  • $chaine = preg_replace('#\[size=([0-9]{1,2})](.+?)\[/size]#si','<span style="font-size:$1px;">$2</span>',$chaine);
  • // Bloc des balises [thick]-[/thick]
  • $chaine = preg_replace('#\[thick=([0-9]{1,3})](.+?)\[/thick]#si','<span style="font-weight:$1px;">$2</span>',$chaine);
  • // Bloc des balises [style]-[/style]
  • $chaine = preg_replace('#\[style=(normal|italique|oblique)](.+?)\[/style]#si','<span style="font-style:$1;">$2</span>',$chaine);
  • // Bloc des balises [weight]-[/weight]
  • $chaine = preg_replace('#\[weight=(lighter|bold|bolder)](.+?)\[/weight]#si','<span style="font-weight:$1;">$2</span>',$chaine);
  • // Bloc des balises [decoration]-[/decoration]
  • $chaine = preg_replace('#\[decoration=(underline|line-through|overline|blink)](.+?)\[/decoration]#si','<span style="font-weight:$1;">$2</span>',$chaine);
  • // Bloc des balises [font]-[/font]
  • $chaine = preg_replace('#\[font=(.+?)](.+?)\[/font]#si','<span style="font-family:$1;">$2</span>',$chaine);
  • // Bloc des balises [list]-[/list]
  • $chaine = preg_replace('`\[list=(circle|disc|square|i)](.+?)\[/list]`si','<ul type="$1">$2</ul>',$chaine);
  • $chaine = preg_replace('`\[list](.+?)\|/list]`si','<ul>$1</ul>',$chaine);
  • // Bloc des balises [*]
  • $chaine = preg_replace('`\[\*=(circle|disc|square|i)](.+?)`si','<li type="$1">$2',$chaine);
  • $chaine = preg_replace('`\[\*](.+?)`si','<li>$1',$chaine);
  • return $chaine;
  • }
  • // /!\ Appel de la fonction : echo forum_code($chaine);
  • /* IMPORTANT : PENSEZ A METTRE LES STYLES (balises) POUR UNR BONNE MISE EN FORME DE CERTAINES BALISES TELLES QUE LES [div], [QUOTE] ! */
  • echo forum_code('[code=php]<?php echo 'coucou'; ?>[/code]');
  • ?>
<style>
.code {
	border: 1px solid #657985;
	padding-left: 10px;
	background-color:#d3dbdf;
}

.quote {
	border: 1px dotted #657985;
	padding-left: 10px;
	background-color:#eeeeee;
}
</style>
<?php
//By Talus
function parse_css($texte) {
	$texte[1] = html_entity_decode($texte[1], true);
	
	$texte[1] = preg_replace('`((.*)(:)(.*)(;))+`x','<span style="color: navy;">$2</span><span style="color: fuchsia;">$3</span><span style="color: blue;">$4</span><span style="color: fuchsia;">$5</span>', $texte[1]);
		   
	$texte[1] = preg_replace('`((.*) \n? {)`x','<span style="color: fuchsia;">$1</span>', $texte[1]);
	$texte[1] = preg_replace('`(/\*(.*)\*/)`xs','<span style="color: gray;">$1</span>', $texte[1]);
	$texte[1] = str_replace('}','<span style="color: fuchsia;">}</span>', $texte[1]);
	
	$texte[1] = preg_replace('`<span style="color: (.*);">(.*)</span>`sU', '<span style="color:$1">[color=$1]$2[/color]</span>',$texte[1]);
			
	$texte[1] = str_replace('\n','', $texte[1]);
	$texte[1] = preg_replace('`(/\*\n?(.*)\n?\*/)`xsU','', $texte[1]);
	
	return '<br /><strong>Code CSS</strong> :<br /><div class="code">' . $texte[1] . '</div><br />';
}
function php_code($code){ //Colorisation de Code PHP
    return '<br /><div class="code_top">Script PHP :</div><div class="code_main">' . highlight_string(html_entity_decode($code[1]), true) . '</div><br />';
}
function forum_code($chaine,$xhtml = FALSE ){ 
	/* Paramètre autorisant (ou non) le HTML dans la chaine $chaine, et autorisant les sauts de lignes*/
	$chaine = nl2br(!$xhtml ? htmlentities($chaine) : $chaine);

	// Bloc des balises [url]-[/url]
	$chaine = preg_replace('`\[url=([http://].+?)](.+?)\[/url]`si','<a href="#" onclick="window.open(\'$1\',\'popup\');" title="$1">$2</a>',$chaine); 
	$chaine = preg_replace('`\[url=(.+?)](.+?)\[/url]`si','<a href="#" onclick="window.open(\'http://$1\',\'popup\');" title="$1">$2</a>',$chaine); 
	$chaine = preg_replace('`\[url]([http://].+?)\[/url]`si','<a href="#" onclick="window.open(\'$1\',\'popup\');" title="$1">$1</a>',$chaine); 
	$chaine = preg_replace('`\[url](.+?)\[/url]`si','<a href="#" onclick="window.open(\'http://$1\',\'popup\');" title="$1">$1</a>',$chaine); 
	     
	// Bloc des balises [b]-[/b]
	$chaine = preg_replace('#\[b](.+?)\[/b]#si','<strong>$1</strong>',$chaine); 
	
	// Bloc des balises [u]-[/u]
	$chaine = preg_replace('#\[u](.+?)\[/u]#si','<span style="text-decoration:underline;">$1</span>',$chaine);
	
	// Bloc des balises [i]-[/i]
	$chaine = preg_replace('#\[i](.+?)\[/i]#si','<em>$1</em>',$chaine);
	
	// Bloc des balises [strike]-[/strike]
	$chaine = preg_replace('#\[strike](.+?)\[/strike]#si','<span style="text-decoration:line-through;">$1</span>',$chaine); 
	
	// Bloc des balises [overline]-[/overline]
	$chaine = preg_replace('#\[overline](.+?)\[/overline]#si','<span style="text-decoration:overline;">$1</span>',$chaine); 
	
	// Bloc des balises [code]-[/code]
	$chaine = preg_replace('#\[code](.+?)\[/code]#si','<br /><strong>div :</strong> :<br /><div class="div">$1</div><br />',$chaine);
	$chaine = preg_replace_callback('#\[code=css](.+?)\[/code]#si','parse_css',$chaine);	
	$chaine = preg_replace_callback('#\[code=php](.+?)\[/code]#si','php_code',$chaine);
	
	// Bloc des balises [quote]-[/quote]
	$chaine = preg_replace('#\[quote=me](.+?)\[/quote]#si','<br /><strong>J\'ai écrit</strong> :<br/><div class="quote">$1 </div><br />',$chaine); 
	$chaine = preg_replace('#\[quote=(.+?)](.+?)\[/quote]#si','<br /><strong>$1 a écrit</strong> :<br/><div class="quote">$2 </div><br />',$chaine); 
	$chaine = preg_replace('#\[quote](.+?)\[/quote]#si','<br /><strong>Citation</strong> :<br/><div class="quote">$1 </div><br />',$chaine); 
	
	// Bloc des balises [img]-[/img]
	$chaine = preg_replace('#\[img=(.+?)](.+?)\[/img]#si','<img src="$1" border="0" alt="$2" />',$chaine);
	$chaine = preg_replace('#\[img](.+?)\[/img]#si','<img src="$1" border="0" />',$chaine);
	
	// Bloc des balises [mail]-[/mail]
	$chaine = preg_replace('#\[mail=([mailto:].+?)](.+?)\[/mail]#si','<a href="$1">$2</a>',$chaine); 
	$chaine = preg_replace('#\[mail=(.+?)](.+?)\[/mail]#si','<a href="mailto:$1">$2</a>',$chaine); 
	$chaine = preg_replace('#\[mail]([mailto:].+?)\[/mail]#si','<a href="$1">$1</a>',$chaine); 
	$chaine = preg_replace('#\[mail](.+?)\[/mail]#si','<a href="mailto:$1">$1</a>',$chaine); 
	
	// Bloc des balises [align]-[/align]
	$chaine = preg_replace('#\[align=(left|center|right)](.+?)\[/align]#si','<div style="text-align:$1; width:100%;">$2</div>',$chaine); 
	
	// Bloc des balises [color]-[/color]
	$chaine = preg_replace('#\[color=(.+?)](.+?)\[/color]#si','<span style="color:$1;">$2</span>',$chaine); 
	
	// Bloc des balises [size]-[/size]
	$chaine = preg_replace('#\[size=([0-9]{1,2})](.+?)\[/size]#si','<span style="font-size:$1px;">$2</span>',$chaine); 
	
	// Bloc des balises [thick]-[/thick]
	$chaine = preg_replace('#\[thick=([0-9]{1,3})](.+?)\[/thick]#si','<span style="font-weight:$1px;">$2</span>',$chaine); 
	
	// Bloc des balises [style]-[/style]
	$chaine = preg_replace('#\[style=(normal|italique|oblique)](.+?)\[/style]#si','<span style="font-style:$1;">$2</span>',$chaine); 
	
	// Bloc des balises [weight]-[/weight]
	$chaine = preg_replace('#\[weight=(lighter|bold|bolder)](.+?)\[/weight]#si','<span style="font-weight:$1;">$2</span>',$chaine); 
	
	// Bloc des balises [decoration]-[/decoration]
	$chaine = preg_replace('#\[decoration=(underline|line-through|overline|blink)](.+?)\[/decoration]#si','<span style="font-weight:$1;">$2</span>',$chaine); 
	
	// Bloc des balises [font]-[/font]
	$chaine = preg_replace('#\[font=(.+?)](.+?)\[/font]#si','<span style="font-family:$1;">$2</span>',$chaine);

	// Bloc des balises [list]-[/list]
	$chaine = preg_replace('`\[list=(circle|disc|square|i)](.+?)\[/list]`si','<ul type="$1">$2</ul>',$chaine);
	$chaine = preg_replace('`\[list](.+?)\|/list]`si','<ul>$1</ul>',$chaine);
	
	// Bloc des balises [*]
	$chaine = preg_replace('`\[\*=(circle|disc|square|i)](.+?)`si','<li type="$1">$2',$chaine);
	$chaine = preg_replace('`\[\*](.+?)`si','<li>$1',$chaine);
	
	return $chaine;
}
// /!\ Appel de la fonction : echo forum_code($chaine);
/* IMPORTANT : PENSEZ A METTRE LES STYLES (balises) POUR UNR BONNE MISE EN FORME DE CERTAINES BALISES TELLES QUE LES [div], [QUOTE] ! */
echo forum_code('[code=php]<?php echo 'coucou'; ?>[/code]');
?> 

Conclusion

Merci à XwZ du forum PHPDebutant qui m'a aidé à me démeler avec les Expressions Régulières ;o)

Liste des balises (+ Explications) :
->[url=x]titre lien[/url]
->[url]adresse_lien[/url]

-> [b]texte en gras[/b]
-> [i]texte en italique[/i]
-> [u]texte souligné[/u]
-> [strike]texte barré[/strike]
-> [overline]texte surligné[/overline]

-> [code]code[/code]
-> [code=css]Code CSS[/code]
-> [code=php]Script PHP (! en incluant les ouvertures et fermetures !)[/code]

->[quote=me]Citation de vous[/quote]
->[quote=quelqu'un]Citation de quelqu'un[/quote]
->[quote]citation sans auteur / nom[/quote]

->[img=adresse_image]titre de l'image[/quote]
->[img]adresse_image[/img]

-> [align]texte soit à  gauche, soit au centre, soit à droite, soit justifié[/align]

-> [color=x]texte en couleur x[/color]
-> [size=x]texte d'une taille x[/size]
-> [thick=x]texte d'une epaisseur x[/thick]
-> [style]texte soit normal, soit italic, soit oblique[/style]
-> [weight]texte soit gras clair, gras, ou gras foncé[/weight]
-> [font=x]texte écrit dans la police x[/font]

->[list=(circle|disc|square|i)]list avec des puces en forme de cercle / disque / carrés / chiffres romains[/list]
->[list]texte listé[/list]
->[*]premier élément de la liste [*]2nd élément [*]3ème (.....) (avec les mêmes option que [list][/list])

Pour appeler appeler (utiliser) la fonction, pensez à mettre l'instruction <?php echo forum_code($chaine); ?> (ou <?php echo forum_code($chaine,true); ?> si vous voulez que le code html soit possible)
 

Historique

07 mai 2005 23:13:24 :
07 mai 2005 23:47:31 :
Ajout de 3 balises : [font]-[/font], [size]-[/size], [color]-[/color]
08 mai 2005 01:03:30 :
Correction de plusieurs petits bug :)
08 mai 2005 01:09:28 :
J'ai enlevé les commentaires qui servaient à rien et qui n'expliquaient rien >_<
08 mai 2005 15:18:11 :
->Ajout de 5 balises ->Correction de certaines balises au standard XHTML.
08 mai 2005 15:19:53 :
Correction d'une faute de frappe :p
08 mai 2005 15:48:09 :
Correction d'un bug au niveau de la balise [img][/img]
08 mai 2005 15:50:00 :
Compatibilité XTML accrue
08 mai 2005 16:05:15 :
Compatibilité XHTML poru les balises [url]-[/url] améliorée
08 mai 2005 16:11:18 :
Correction d'un bug mineur
08 mai 2005 17:36:46 :
Ajout de 2 balise (bon une mais en 2 parties) + Explications des différents codes.
08 mai 2005 17:39:08 :
Plus de clarté dans les differentes explications du fonctionnement du code
11 mai 2005 20:37:41 :
Plus de compatibilité XHTML, et plus de clarté dans les explications.
11 mai 2005 21:19:43 :
Compatibilité XHTLM accrue, et ajout de la balises <style></style> manquante qu'il devait y avoir (vous pouvez modifier les styles)
11 mai 2005 21:42:19 :
Ajout des balises de mises en forme <style> & </style>, et un epu plus d'explication et correction d'un bug mineur.
13 mai 2005 11:56:43 :
Changement dans la balise [align][/align].
16 mai 2005 18:50:48 :
Possibilité de choix entre un html actif ou on, et j'ai enlevé une balise </style> qui ne devait pas être là :)
16 mai 2005 23:27:32 :
Sauts de lignes possibles dans la chaine $chaine. (en attente d'un code peut-etre plus leger)
17 mai 2005 20:41:16 :
Code plus compacte (possibilité d'activer / désactiver HTML)
08 juin 2005 09:17:45 :
Correction d'un bug mineurs à propos de l'activation / desactivation du xhtml.
21 juin 2005 19:45:32 :
Colorisation du code PHP =)
21 juin 2005 19:52:48 :
Ajout de personnalisation du fond de la balise [code=php][/code] + explications sur sa facon de marcher =)
21 juin 2005 20:42:50 :
Modification du nom de la fonction en un nom plus adapté =)
22 juillet 2005 13:06:58 :
Ajout d'une balis permettant l'affichage de CSS et sa colorisation
25 janvier 2006 16:48:26 :
Voilà, corrigé quelques bugs :P

Commentaires et avis

signaler à un administrateur
Commentaire de Anthomicro le 08/05/2005 10:27:39

Salut,

rajoute "px" à la fin de tes unités (par exemple pour le font-size)

Ensuite rends ton code compatible XHTML en remplaçant les balises dépréciées (<i>,<u>, ... par leurs nouvelles balises en XHTML)

Ensuite pour des citations utilise plutôt la sémantique : <blockquote> ou <cite> (<cite> pour de courtes citations) plutôt que la balise <code> qui sert pour ajouter du code comme son nom l'indique.

Idem pour le <div align>

tu peux faire plutôt un <span style="text-align:X"></span> (il faut que ton span prenne toute la largeur du contenu pour aligner le texte).

la balise <strike> n'est également plus valide, tout comme le target="_blank" (l'attribut target n'est plus valide)

a +

signaler à un administrateur
Commentaire de OniTalus le 08/05/2005 10:58:47

En fait, j'ai dja testé le <span style="text-align:X"></span>, mais ca n'avait pas marché :(
Y' apas d'equivalent pour strike?

Merci de ces conseils ^^ (je m'en vais la modifier de suite :p)

signaler à un administrateur
Commentaire de OniTalus le 08/05/2005 11:00:22

(Re-salut)

Et j'oublaisi, y'a pas d'equivalent pour target="_blank" ?

signaler à un administrateur
Commentaire de Anthomicro le 08/05/2005 11:12:58

pour le target non faut passer par javascript...

Pour le strike c'est en CSS : http://www.vulgarisation-informatique.com/css-polices.php

signaler à un administrateur
Commentaire de OniTalus le 08/05/2005 11:27:24

Merci beaucoup, je m'en vais tout de suite modifier mon code :)

signaler à un administrateur
Commentaire de Jayadeva le 08/05/2005 13:57:59

Ton code ne gère pas le chevauchement de balise ;)

signaler à un administrateur
Commentaire de OniTalus le 08/05/2005 15:16:36

Bah pourtant, quand j'ai testé (avec les align, color, size, etc), ca marche (en local du moins).....
Voilà j'ai corrigé.

signaler à un administrateur
Commentaire de OniTalus le 08/05/2005 15:46:48

J'ai recorrigé quelques fautes, mais je n'arrive pas à remplacer le target="_blank" par une fonction jscript apropriée :(

signaler à un administrateur
Commentaire de OniTalus le 08/05/2005 17:44:42

Bon bah c'est fait

signaler à un administrateur
Commentaire de statopulos01 le 09/05/2005 19:36:47

signaler à un administrateur
Commentaire de twisteurwin le 10/05/2005 06:31:33

Pinaiseuh la petite note 4/10 ???
Moi jt'e met un 7/10 car cette source est interessante et en plus elle est corrigée :-)

signaler à un administrateur
Commentaire de OniTalus le 10/05/2005 20:05:29

Eh bien merci.... Si quelqu'un pense que je devrais rajouter une balise ou un truc à améliorer, postez des comments ^^

signaler à un administrateur
Commentaire de Anthomicro le 10/05/2005 20:41:02

la balise <u> est dépréciée

signaler à un administrateur
Commentaire de MadM@tt le 11/05/2005 14:35:14

Moi je met 9/10 histoire de remonter la note parce que bcp d'efforts sont fournis.
En + la source commence à etre bien ;)

signaler à un administrateur
Commentaire de Anthomicro le 11/05/2005 18:15:08

bon j'ai mis 10 histoire de remonter...

signaler à un administrateur
Commentaire de OniTalus le 11/05/2005 20:41:05

Voilà, j'a corrigé la balises <u></u> :-)

(Par contre, j'i beau essayer de remplacer les <div align="$1"></div> avec des <span style="text-align:$1"></span>, mais cela ne marche pas <_< (fdaudrait voir avec des <div style="$1"></div> si ca se peut....

En tout cas merci, ca m'encourage franchement ^^

signaler à un administrateur
Commentaire de Anthomicro le 11/05/2005 20:50:00

normal que ça ne fonctionne pas, par défaut le span fait la largeur de ton texte, et l'alignement se fait par rapport à la largeur du span (je sais pas si tu me suis j'avoue que je m'exprime mal)

bref il faut que ton span ait une largeur égale ou presque au conteneur. Rajoute ça dans la CSS :

span{
width:100%;
}

signaler à un administrateur
Commentaire de OniTalus le 11/05/2005 21:09:08

ok, je rajouterais ca tout à l'heure...

Sinon j'ai vu ton site, super interessant (au début, quand tu l'a donné l'url, j'avais pas réalisé :p)

signaler à un administrateur
Commentaire de Anthomicro le 11/05/2005 23:52:30

;-)

Faut que je refasse la section prog

signaler à un administrateur
Commentaire de twisteurwin le 12/05/2005 05:36:54

OniTalus a dit > ...Par contre, j'i beau essayer de remplacer les <div align="$1"></div> avec des <span style="text-align:$1"></span>...

remplace par :
<span style="text-align:$1;">
tu as oublié le point virgule à la fin !

Le mieux serait de faire une feuille de style .css externe et de mettre que des <span class="blabla"> et <div class="blabla">

Bon c'est mon avis... c'est aussi bien comme ca...

signaler à un administrateur
Commentaire de Anthomicro le 12/05/2005 17:56:40

ça ne fonctionnera pas plus avec un point virgule ou non à  la fin dans ce cas précis ;-)

signaler à un administrateur
Commentaire de OniTalus le 12/05/2005 21:04:23

J'avais deja essayé avec le point-virgule, mais je n'ai pas encore testé pour le width:100%.....

Sinon, ca n'existe pas <div style="text-align:$1">$2</div> ?

signaler à un administrateur
Commentaire de Anthomicro le 13/05/2005 07:34:30

si le text-align existe, mais pour aligner quelque chose, il faut que la largeur du div soit supérieure, sinon le div sera placé en fonction du contenu extérieur ou de ses paramètres float. Tu dois donc lui spécifier la même largeur que son conteneur pour aligner ce texte par rapport au conteneur.

signaler à un administrateur
Commentaire de OniTalus le 13/05/2005 11:11:58

En gros, ca équivaut à la même chose que <span></span> ?

signaler à un administrateur
Commentaire de Anthomicro le 13/05/2005 17:29:33

Dans ton cas oui.

signaler à un administrateur
Commentaire de zoumzoumman le 16/05/2005 12:36:10

Très très bon script... je met un bon 10 haut la main!

Tiens par contre petite suggestion mais qui peux avoir son effet... Si on appel ce script tel quel, l'html n'est plus supporté, normal!Donc voilà la petite modif que j'ai apporté dans mes scripts:
*****************************************************************
function codebb($chaine,$htmlactif){
    // Paramètre Utile
    if ($htmlactif == 0) $chaine = nl2br(htmlentities($chaine));
*****************************************************************
(Il est vrai que ce script est fait pour n'utiliser que l'HTML, mais pour ceux qui veulent dépasser ce stade...)

Cela permet de prendre en compte le mélange des deux langages l'HTML et le BBcode.
- Si $htmlactif=1, prise en compte du mélange HTML et BBCode
- Si $htmlactif=0, seul le BBcode est autorisé

C'est tout bête mais vu que dans mon cas l'utilisateur peut et utilisé l'HTML et utilisé le BBcode, le problème se posait puisque l'HTML n'était plus interprété à défaut du bbcode!

Voilà, en espérant que cela serve à quelque un!

signaler à un administrateur
Commentaire de OniTalus le 16/05/2005 18:46:45

Je vais la modif à l'instant, merci du conseil ;-)

signaler à un administrateur
Commentaire de XwZ le 13/06/2005 20:46:51

Slt,
Je ne savais pas que j'étais aussi, mais ça fait plaisir de voir des personnes qui en remerci d'autre (surtout si c'est moi :D).
Bonne continuation.

signaler à un administrateur
Commentaire de OniTalus le 13/06/2005 20:52:56

Eh bien je dirais que tu m'a bien depanné la dernière fois :-) (et comem tu le vois, j'ai encore plus bidouillé xD)

signaler à un administrateur
Commentaire de MadM@tt le 13/06/2005 20:55:45

Une question : si on ecrit du xhtml dans une page html, ça marchera comme du code html c'est ça (enfin ça va pas planter quoi) ?
merci

signaler à un administrateur
Commentaire de OniTalus le 13/06/2005 21:03:55

En fait, au début c'était du HTML tout court jusqu'a ce que Anthomicro em remonte les bretellles pour ainsi dire... Donc je dirais que oui, ca devraut marcher d'après ce que j'en sais ;-)

signaler à un administrateur
Commentaire de XwZ le 13/06/2005 21:26:02

re,
OniTalus >> je suis content de t'avoir aidé.
MadM@tt >> les norme xhtml sont applicable dans une page html d'ailleur c'est recommandé.
@++

signaler à un administrateur
Commentaire de OniTalus le 13/06/2005 21:32:56

Si quelqu'un a une balise à suggerer, qu'il me le dise :)

signaler à un administrateur
Commentaire de MadM@tt le 14/06/2005 11:43:17

oki merci pour l'info, c'est ce que je pensais, d'ailleurs il vaut mieux coder trop "serieux" que pas assez...
Jvais utiliser ces normes xhtml dans mes pages je crois

signaler à un administrateur
Commentaire de XwZ le 14/06/2005 15:44:37

slt,
MadM@tt >> pour savoir si tu es valide http://validator.w3.org/
OniTalus >> tu pourrais peut-être mettre le code en couleur ?

signaler à un administrateur
Commentaire de OniTalus le 14/06/2005 16:01:35

J'ai essayé, mais ca ne marche pas pour le PHP xD

signaler à un administrateur
Commentaire de MadM@tt le 14/06/2005 18:57:36

C'est excellent !!!! merci pour l'adresse je ne savais pas qu'une telle merveille existait ! Merci beaucoup ;)

signaler à un administrateur
Commentaire de XwZ le 14/06/2005 20:30:10

Décidement cette page est faite pour moi :p.
OniTalus >> ça veut dire qu'il faut encore essayer :p et c'est faisable regarde le forum de phpdebutant ;)

signaler à un administrateur
Commentaire de OniTalus le 14/06/2005 22:44:05

Bah oui je comptais leur demander :)

signaler à un administrateur
Commentaire de OniTalus le 21/06/2005 19:47:00

Voilà, c'est fait, j'ai moifié le code =)

(Manque plus qu'a pouvoir perdsonnalisé les code m'enfin..... Faut que je voie)

signaler à un administrateur
Commentaire de OniTalus le 21/06/2005 20:05:52

Bon voilà c'est modif, tout est nickel =)

signaler à un administrateur
Commentaire de vbguigui le 21/06/2005 20:51:27

C'est difficile tout ton code ...
Moi j'ai fait un beacoup lus simple :

function creer_html($nonhtml){
$nonhtml=str_replace("<","&lt;",$nonhtml);
$nonhtml=str_replace(">","&gt;",$nonhtml);
$nonhtml=str_replace('"',"&quot;",$nonhtml);
$nonhtml=str_replace("€","&euro;",$nonhtml);
$nonhtml=str_replace("\n","<br>",$nonhtml);
$nonhtml=str_replace("[B]","<b>",$nonhtml);
$nonhtml=str_replace("[/B]","</b>",$nonhtml);
$nonhtml=str_replace("[U]","<u>",$nonhtml);
$nonhtml=str_replace("[/U]","</u>",$nonhtml);
$nonhtml=str_replace("[I]","<i>",$nonhtml);
$nonhtml=str_replace("[/I]","</i>",$nonhtml);
$nonhtml=str_replace("[URL=","<A target=\"_top\" href='",$nonhtml);
$nonhtml=str_replace("[/URL]","</a>",$nonhtml);
$nonhtml=str_replace("[EMAIL=","<A target=\"_top\" href='mailto:",$nonhtml);
$nonhtml=str_replace("[/EMAIL]","</a>",$nonhtml);
$nonhtml=str_replace("[IMG]","<img src='",$nonhtml);
$nonhtml=str_replace("[/IMG]","'>",$nonhtml);
$nonhtml=str_replace("[CODE]","<TABLE cellSpacing=1 cellPadding=3 width=\"95%\" align=center border=0><TBODY>\n<TR><TD><B>CODE</B></TD></TR>\n<TR><TD id=CODE>\n",$nonhtml);
$nonhtml=str_replace("[/CODE]","</TD></TR></TBODY>\n</TABLE>",$nonhtml);
$nonhtml=str_replace("[QUOTE]","<TABLE cellSpacing=1 cellPadding=3 width=\"95%\" align=center border=0>\n<TBODY><TR><TD><B>QUOTE</B></TD></TR>\n<TR><TD id=QUOTE>",$nonhtml);
$nonhtml=str_replace("[/QUOTE]","</TD></TR></TBODY></TABLE>",$nonhtml);
$nonhtml=str_replace("[LIST]","<UL>",$nonhtml);
$nonhtml=str_replace("[*]","<LI>",$nonhtml);
$nonhtml=str_replace("[/LIST]","</UL>",$nonhtml);
$nonhtml=str_replace("[FONT=","<font face='",$nonhtml);
$nonhtml=str_replace("[/FONT]","</font>",$nonhtml);
$nonhtml=str_replace("[SIZE=","<font size='",$nonhtml);
$nonhtml=str_replace("(SIZE)]","'>",$nonhtml);
$nonhtml=str_replace("[/SIZE]","</font>",$nonhtml);
$nonhtml=str_replace("[COLOR=","<font color='",$nonhtml);
$nonhtml=str_replace("[/COLOR]","</font>",$nonhtml);
$nonhtml=str_replace("]","'>",$nonhtml);
return($nonhtml);
}

Voila

signaler à un administrateur
Commentaire de Anthomicro le 21/06/2005 20:58:02

hum, tu peux faire deux array() plutôt que de faire 36 str_replace, ça sera plus propre et plus rapide.

signaler à un administrateur
Commentaire de Anthomicro le 21/06/2005 20:58:36

de plus ton code n'est pas sécurisé, n'importe qui peut te hacker ta mise en page avec ça...

signaler à un administrateur
Commentaire de Anthomicro le 21/06/2005 20:59:18

et j'ajoute que des éléments de ton code ne sont pas compatible XHTML strict (désolé pour les multiples comms, y'a pas de fonction d'édit...)

signaler à un administrateur
Commentaire de OniTalus le 21/06/2005 21:00:51

Donc en gros ma fonction reste gagnate pour le moment xD

signaler à un administrateur
Commentaire de OniTalus le 21/06/2005 21:01:44

(re désolé pour les multiples)

Et en plus, compatible XHTML & plus rapide (les PCRE sont nettement plus rapide si je m'en souvien bien....)

signaler à un administrateur
Commentaire de Anthomicro le 21/06/2005 21:12:28

bah non les expressions régulières sont plus lentes, mais bon elles restent largement gagnantes sur ce type d'utilisation, où prime la sécurité.

a +

signaler à un administrateur
Commentaire de OniTalus le 21/06/2005 21:13:50

J4ai regardé ton article sur ton site, mais comme tu l'a pas mis, j'ai eu un doute justement xD

signaler à un administrateur
Commentaire de Anthomicro le 21/06/2005 21:17:18

ouais je le rajouterai tiens ^^

signaler à un administrateur
Commentaire de tsing le 27/11/2005 22:53:28

lorsque j'utilise la balise bb [code=php] j'obtiens l'erreur suivante :

Fatal error: Call to undefined function: html_entity_dediv() in c:\documents and settings\cyril\bureau\lisa\include\php\function.php

C'est louche :)
Mais il est vrai que html_entity_dediv() n'existe pas. Merci pour vos lumières

signaler à un administrateur
Commentaire de Anthomicro le 27/11/2005 23:31:21

ça doit être html_entity_decode() surement ;-)

signaler à un administrateur
Commentaire de skaterboss2000 le 25/01/2006 12:29:56

bien joué, ça m'a aidé pour un de mes projets ! :) merci beaucoup !

signaler à un administrateur
Commentaire de OniTalus le 25/01/2006 16:53:42

Salut,

Voilà, j'ai corrigé les fautes, c'etait un remplacement abusif :P

signaler à un administrateur
Commentaire de tokita le 05/07/2006 16:56:25

bonjour à tous
je voudrais ajouter se script a mon code qui affiche le contenue d'un fichier txt mais je n'y arrive pas.
<?php
// on affiche :-)
if (file_exists ('./biographie.txt')) {
    $fp = fopen ('./biographie.txt', 'r');
    $read = stripslashes (fread ($fp, filesize ('./biographie.txt')));
    $tab = explode ('<br />', $read);
    $tab = array_reverse ($tab);
    $read = implode ('<br />', $tab);
    echo $read;
}

?>

signaler à un administrateur
Commentaire de zulot le 13/04/2007 15:14:26

Existe il un moyen d'eviter l'imbrication des span?
j'en demande peut etre beaucoup;-)

signaler à un administrateur
Commentaire de OniTalus le 13/04/2007 18:16:13

Salut,

Oula, il est un peu vieux ce code, mais je vais faire du mieux possible pour t'aider.

Peut-être avec une autre regex par derrière, mais honnetement, je pense pas que ca vaut vraiment le détour...

signaler à un administrateur
Commentaire de zulot le 16/04/2007 10:17:20

Avec l'aide d'une personne sur un forum on a fait deux fonctions qui permettent de virer les <span> multiple

function span_replace($span) {
  if(preg_match_all('#style=["\'](.+?)["\']#',$span[0],$style)) {
    return '<span style="'.implode(' ',$style[1]).'">';
  }
  return $span[0];
}

function delMultiSpan($texte){
$texte = preg_replace_callback('#(?:<span style=["\'].+?["\']>\s*)+#','span_replace',$texte);
return(preg_replace('#(</span>){1,}#si','</span>',$texte));
}