Steve TENZA
Web développeur
Facebook Me contacter Cookie
Télécharger
Noter:
5/5 (1)
Ajouté/Modifié le 2023-10-28
Visionné 834 fois

BBCode PHP : comment parser des balises ?

Description

Voici une fonction relativement simple qui illustre comment vous pouvez analyser le BBCode en utilisant PHP, en prenant en compte les paramètres au sein des balises. Cette approche permet d'offrir une flexibilité accrue lors de la manipulation du BBCode dans vos applications, en permettant aux utilisateurs de personnaliser le contenu en fonction de leurs besoins spécifiques. Le parsing du BBCode avec PHP devient ainsi un outil puissant pour la création et la gestion de contenu dynamique au sein de vos projets web.


<?php
//parser du BBCode en PHP en prenant en compte les balises imbriquées
function bbcode($texte){

//"\1" nous permet de faire une correspondance de la première capture, soit "\w+" pour que ce soit la même balise récupérée et pas n'importe laquelle
//".*" nous permet de prendre tout ce qui se trouve entre les tags (balises) concernés, et de s'arrêter au premier trouvé grâce à "?" qui suit la directive : ".*?"
//"?:" nous permet de pas capturer ce qu'il-y-a entre parenthèses "(?: ceci ne sera pas capturé)"
//"[^\]]+" capture tout sauf "]" (crochet fermant) pour éviter de passer le crochet fermant du tag actuellement parsé. Tout ceci entre parenthèse pour le retrouver dans le deuxième groupe : $match[2]. Suivi d'un ? car il peut le paramètre de la balise BBCode peut être optionnel.
$pattern = '#\[(\w+)(?:=([^\]]+))?\](.*?)\[/\1\]#s';

//on parse chaque balise que preg_match() pourrait trouver, permet de gérer les imbrications
while(preg_match($pattern, $texte, $match)){
$tag = $match[1];
$parametres = $match[2];
$content = $match[3];

//on fait un remplacement de la balise par la balise HTML correspondante
switch($tag){
case 'u':
$remplacement = "<u>$content</u>";
break;
case 'b':
$remplacement = "<b>$content</b>";
break;
case 'i':
$remplacement = "<i>$content</i>";
break;
case 'color':

//Gestion d'un paramètre

//vérifie l'exactitude du paramètre envoyé, si il correspond à nos attentes
//ici dans cet exemple, on peut envoyer des noms de couleur (blue, red, green,...) ou des codes couleurs
if(!preg_match("#(?:\#[0-9a-f]{3,8}|[a-z]{3,15})#s", $parametres)){
$remplacement = $content;
break;
}

$remplacement = "<span style=\"color:$parametres\">$content</span>";
break;
case 'quote':
$remplacement = "<blockquote>$content</blockquote>";
break;

//au cas où la balise mentionnée n'existe pas, on rend le texte sans les balises afin de ne pas faire une boucle PHP infinie et chercher à le remplacer indéfiniement
default:
$remplacement = $content;
}

// Remplacer la balise dans le texte
$texte = str_replace($match[0], $remplacement, $texte);
}

//enfin, on retourne le texte, parsé.
return $texte;
}
?>
<?php
$texte = "Du texte BBCode emboîté ; [b]du gras, [i]de l'italique [u]et du souligné[/u][/i][/b]
[quote]quote 1[quote]quote [color=red]2[/color][/quote][/quote]";
$texte = bbcode($texte);
echo $texte;
?>

Résultat du parsing BBCode



J'espère que ce script gratuit vous sera utile dans vos projets.
Si vous souhaitez soutenir mon travail, un simple clic sur le bouton "Donner remercier" ci-dessous ou une note serait grandement apprécié. Merci pour votre générosité !
Votre réussite en ligne commence ici

Vous cherchez à pousser encore plus loin vos idées ou à les concrétiser avec un site internet sur mesure ? Je suis là pour vous aider ! Mon expérience en développement web est à votre disposition.

Que ce soit la création de votre site web pro ou l'apport de fonctionnalités avancées à votre projet, contactez-moi pour en discuter et avoir un devis gratuit personnalisé.

Mon objectif est de vous offrir des solutions sur mesure qui répondent à vos besoins, et votre vision associée à mon expertise donnera vie à votre projet web parfait. Contactez-moi aujourd'hui, je réponds en général en moins d'une heure :

Demander un devis
Réponse rapide !

Vous recherchez un script précis ?

Dites-moi ce dont vous avez besoin, je peux développer le script demandé et vous envoyer un mail dès qu'il est dispo !

🔔 Vous pouvez laisser votre mail pour recevoir les nouveaux scripts. Pas de pub, pas de tracas. Vous êtes libre de le supprimer à tout moment.

Je prends en compte toutes les demandes. Les idées les plus populaires passent en priorité et seront publiées dès qu'elles seront prêtes. 2842 demandes reçues.

Commentaires

Ajouter un commentaire

Commenter
Pseudo/Nom
Email
Message
Captcha
memo1
Commenter
Ajoutez un commentaire, soyez le premier !

Retour à la liste des scripts

Un site à créer ?
Contactez-moi