Parsage de bbcode

Résolu/Fermé
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 - 8 juin 2011 à 13:13
crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 - 8 juin 2011 à 22:38
Bonjour,

Je suis en train de construire un système de parsage de bbcode. Pour cela j'utilise les regex mais cela ne fonctionne pas, enfin ça fait un peu n'importe quoi...
Voici la fonction, issue du sdZ (modifié) :
<?php
function bbcode($content) {
	// Parsage des balises
	$zcode = array(
		''[sous-titre](.+)/sous-titre'isU',
		''[italique](.+)/italique'isU',  
		''[gras](.+)/gras'isU',
		''[barre](.+)/barre'isU',
		''[lien](.+)/lien'isU',
		''[lien url=&quot;(.+)&quot;](.+)/lien'isU',
		''[citation](.+)/citation'isU',
		''[citation nom=&quot;(.+)&quot;](.+)/citation'isU',
		''[citation lien=&quot;(.+)&quot;](.+)/citation'isU',
		''[image miniature=&quot;(.+)&quot;](.+)/image'isU',//image+miniature
	);  
	
	$html = array(
		'<h2>$1</h2>',
		'<em>$1</em>',  
		'<strong>$1</strong>',
		'<del>$1</del>', 
		'<a href="$1">$1</a>',
		'<a href="$1">$2</a>',
		'<br /><span class="citation">Citation</span><div class="citation2">$1</div>',
		'<br /><span class="citation">Citation : $1</span><div class="citation2">$2</div>',
		'<br /><span class="citation"><a href="$1">Citation</a></span><div class="citation2">$2</div>',
		'<a href="$2"><img src="$1" alt="" /></a>',
	); 
	
	$content = htmlspecialchars($content, ENT_QUOTES);
	$content = preg_replace($zcode, $html, $content);

	// Rtours à la ligne
	$content = preg_replace(''\n'isU', '<br />', $content); 
	
	return $content;
}

if (isset($content))
{
	if (get_magic_quotes_gpc()) {
		$content = stripslashes($content);
	}

	$content = bbcode($content); // Ecriture du contenu parsé. 
}
?>

1 réponse

crocoscore Messages postés 165 Date d'inscription dimanche 16 novembre 2008 Statut Membre Dernière intervention 3 février 2015 5
8 juin 2011 à 22:38
J'ai trouver, voilà mon code final :
<?php
function bbcode($content) {
	// Parsage des balises
	$zcode = array(
		''\[sous-titre\](.+)\[/sous-tire\]'isU',
		''\[citation\](.+)\[/citation\]'isU',
		''\[italique\](.+)\[/italique\]'isU',  
		''\[gras\](.+)\[/gras\]'isU',
		''\[barre\](.+)\[/barre\]'isU',
		''\[lien\](.+)\[/lien\]'isU',
		''\[lien url=&quot;(.+)&quot;\](.+)\[/lien\]'isU',
		''\[image miniature=&quot;(.+)&quot;\](.+)\[/image]'isU' //image+miniature
	);  
	
	$html = array(
		'<h2>$1</h2>',
		'</p><blockquote>$1</blockquote><p>',
		'<em>$1</em>',  
		'<strong>$1</strong>',
		'<del>$1</del>', 
		'<a href="$1">$1</a>',
		'<a href="$1">$2</a>',
		'<a href="$2"><img src="$1" alt="" /></a>'
	); 

	$content = htmlspecialchars($content, ENT_QUOTES);
	$content = preg_replace($zcode, $html, $content);
	
	// Rtours à la ligne
	$content = preg_replace(''\n'isU', '<br />', $content); 
	
	return $content;
}

if (isset($content))
{
	if (get_magic_quotes_gpc()) {
		$content = stripslashes($content);
	}

	$content = bbcode($content); // Ecriture du contenu parsé. 
}
?>
0