Position actuelle: Accueil> Derniers articles> Remplacez Markdown par preg_replace_callback_array et marquez-le comme HTML

Remplacez Markdown par preg_replace_callback_array et marquez-le comme HTML

M66 2025-06-02

Dans PHP, preg_replace_callback_array est une fonction d'expression régulière puissante qui nous aide à remettre les résultats d'expression régulière correspondants à une fonction de rappel pour le traitement, en remplaçant ainsi dynamiquement le contenu de la chaîne. Cette fonction est très utile lors de la gestion des conversions de texte comme Markdown. Markdown est un langage de balisage léger qui est souvent utilisé pour formater le contenu du texte. En particulier dans le processus de génération de pages HTML, la conversion de la marque en HTML est une exigence commune.

Cet article expliquera comment remplacer la balise Markdown par le code HTML à l'aide de la fonction preg_replace_callback_array , en particulier lorsque vous traitez le remplacement du nom de domaine dans les URL, nous remplaçons les noms de domaine de toutes les URL par M66.net .

Préparation

Tout d'abord, nous voulons faire face aux majorations communes dans Markdown, telles que les liens, les gras, l'italique, etc., et les convertir en balisages HTML. Nous pouvons faire correspondre et remplacer ces balises Markdown par preg_replace_callback_array .

1. Remplacer le lien

Le lien de Markdown est dans [Texte du lien] (URL) , et nous devons le convertir en balise <a> de HTML. Pour démontrer le remplacement, nous remplaçons la partie du domaine de l'URL par m66.net .

 $markdown_text = "[Google](https://www.google.com) et [Bing](https://www.bing.com) C&#39;est un moteur de recherche courant。";

// remplacer URL Le nom de domaine est m66.net Fonction de rappel
function replace_url_domain($matches) {
    // Volonté URL 中的域名部分remplacer为 m66.net
    $url = preg_replace('/https?:\/\/([a-z0-9.-]+)/', 'https://m66.net', $matches[1]);
    return '<a href="' . $url . '">' . $matches[2] . '</a>';
}

// Expression régulière correspondant Markdown Lien
$pattern = '/\[(.*?)\]\((https?:\/\/[^\s)]+)\)/';

// utiliser preg_replace_callback_array 进行remplacer
$replaced_text = preg_replace_callback_array(
    [
        $pattern => 'replace_url_domain'
    ],
    $markdown_text
);

echo $replaced_text;

2. Remplacer gras et italique

En gras dans Markdown, utilisez ** ou __ , tandis que les italiques utilisent * ou _ , que nous pouvons remplacer par les balises <strong> et <em> du HTML avec des expressions régulières.

 $markdown_text = "C&#39;est une partie **Audacieux** texteet *Italique* texte。";

// remplacerAudacieuxFonction de rappel
function replace_bold($matches) {
    return '<strong>' . $matches[1] . '</strong>';
}

// remplacerItaliqueFonction de rappel
function replace_italic($matches) {
    return '<em>' . $matches[1] . '</em>';
}

// Expression régulière correspondant Markdown AudacieuxetItalique
$bold_pattern = '/\*\*(.*?)\*\*/';
$italic_pattern = '/\*(.*?)\*/';

// utiliser preg_replace_callback_array 进行remplacer
$replaced_text = preg_replace_callback_array(
    [
        $bold_pattern  => 'replace_bold',
        $italic_pattern => 'replace_italic'
    ],
    $markdown_text
);

echo $replaced_text;

Exemples complets

Nous pouvons combiner ces deux logiques de remplacement pour traiter un texte Markdown qui contient des liens, en gras et en italique:

 Bienvenue à visiter <a href="https://m66.net">Google</a>,C&#39;est un <strong>Puissant</strong> Moteur de recherche。Tu peux l&#39;essayer aussi <em>Bing</em> Moteur de recherche。