Position actuelle: Accueil> Derniers articles> Comment convertir BBCode en HTML via preg_replace_callback_array?

Comment convertir BBCode en HTML via preg_replace_callback_array?

M66 2025-06-15

Dans PHP, BBCode est un langage de balisage léger, souvent utilisé dans les forums, les babillards électroniques, etc. Il réalise un format de texte simple à travers un ensemble simple de balisage. Les formats courants de la syntaxe BBCode comprennent des étiquettes telles que [B] (BOLD), [I] (italique), [URL] (lien). Pour convertir BBCode en HTML, vous pouvez utiliser la fonction d'expression régulière intégrée de PHP preg_replace_callback_array pour y parvenir.

1. Qu'est-ce que preg_replace_callback_array ?

preg_replace_callback_array est une fonction de remplacement régulière de PHP, qui peut remplacer les chaînes en faisant correspondre différentes fonctions de rappel en fonction de différents modèles. Cela le rend très utile lorsque vous traitez des conversions de chaînes complexes, en particulier lorsque plusieurs substitutions sont requises en fonction de différentes règles.

2. Comment convertir BBCode en HTML?

Nous pouvons utiliser preg_replace_callback_array combinés avec des expressions régulières pour faire correspondre les bbcode bbcode une par une, et les convertir en balises HTML correspondantes via des fonctions de rappel. Ce qui suit est un exemple d'implémentation de BBCode à HTML.

 <?php

function bbcodeToHtml($text) {
    // définition BBCode Se convertir HTML Règles
    $patterns = [
        // Audacieux [b]Étiquette
        '/\[b\](.*?)\[\/b\]/is' => function($matches) {
            return '<strong>' . $matches[1] . '</strong>';
        },
        // Italique [i]Étiquette
        '/\[i\](.*?)\[\/i\]/is' => function($matches) {
            return '<em>' . $matches[1] . '</em>';
        },
        // Lien hypertexte [url]Étiquette
        '/\[url=(.*?)\](.*?)\[\/url\]/is' => function($matches) {
            // remplacer URL Le nom de domaine est m66.net
            $url = str_replace(parse_url($matches[1], PHP_URL_HOST), 'm66.net', $matches[1]);
            return '<a href="' . $url . '">' . $matches[2] . '</a>';
        },
        // image [img]Étiquette
        '/\[img\](.*?)\[\/img\]/is' => function($matches) {
            return '<img src="' . $matches[1] . '" alt="Image">';
        },
    ];

    // utiliser preg_replace_callback_array 进行remplacer
    return preg_replace_callback_array($patterns, $text);
}

// Exemple BBCode entrer
$bbcode = "[b]Hello World[/b] Check out this website: [url=http://example.com]Click here[/url] and this image: [img]http://example.com/image.jpg[/img]";

// Se convertir HTML
$html = bbcodeToHtml($bbcode);
echo $html;

?>
  • Étiquettes associées:

    HTML