現在の位置: ホーム> 最新記事一覧> Markdownをpreg_replace_callback_arrayに置き換え、HTMLとしてマークします

Markdownをpreg_replace_callback_arrayに置き換え、HTMLとしてマークします

M66 2025-06-02

PHPでは、 preg_replace_callback_arrayは、一致する正規表現の結果を処理のコールバック関数に引き渡すのに役立つ強力な正規表現関数であり、それによって文字列コンテンツを動的に置き換えます。この関数は、Markdownのようなテキスト変換を扱う場合に非常に役立ちます。 Markdownは、テキストコンテンツのフォーマットによく使用される軽量のマークアップ言語です。特にHTMLページを生成するプロセスでは、マークダウンをHTMLに変換することは一般的な要件です。

この記事では、 PREG_REPLACE_CALLBACK_ARRAY関数を使用して、MarkDownタグをHTMLコードに置き換える方法について説明します。特に、URLのドメイン名の交換を扱う場合、すべてのURLのドメイン名をM66.netに置き換えます。

準備

まず、リンク、太字、斜体など、マークダウンの一般的なマークアップに対処し、それらをHTMLマークアップに変換したいと考えています。これらのマークダウンタグをpreg_replace_callback_arrayに一致させて置き換えることができます。

1.リンクを交換します

Markdownのリンクは[リンクテキスト](URL)にあり、HTMLの<a>タグに変換する必要があります。交換を実証するために、URLのドメイン部分をM66.netに置き換えます。

 $markdown_text = "[Google](https://www.google.com) そして [Bing](https://www.bing.com) 一般的な検索エンジンです。";

// 交換する URL ドメイン名はです m66.net コールバック関数
function replace_url_domain($matches) {
    // 意思 URL 中的域名部分交換する为 m66.net
    $url = preg_replace('/https?:\/\/([a-z0-9.-]+)/', 'https://m66.net', $matches[1]);
    return '<a href="' . $url . '">' . $matches[2] . '</a>';
}

// 正規表現マッチング Markdown リンク
$pattern = '/\[(.*?)\]\((https?:\/\/[^\s)]+)\)/';

// 使用 preg_replace_callback_array 进行交換する
$replaced_text = preg_replace_callback_array(
    [
        $pattern => 'replace_url_domain'
    ],
    $markdown_text
);

echo $replaced_text;

2。太字と斜体を交換します

マークダウンの太字では、 **または__を使用しますが、斜体は*または_を使用します。これは、正規表現でHTMLの<strong>および<em>タグに置き換えることができます。

 $markdown_text = "これは一部です **大胆な** 文章そして *イタリック* 文章。";

// 交換する大胆なコールバック関数
function replace_bold($matches) {
    return '<strong>' . $matches[1] . '</strong>';
}

// 交換するイタリックコールバック関数
function replace_italic($matches) {
    return '<em>' . $matches[1] . '</em>';
}

// 正規表現マッチング Markdown 大胆なそしてイタリック
$bold_pattern = '/\*\*(.*?)\*\*/';
$italic_pattern = '/\*(.*?)\*/';

// 使用 preg_replace_callback_array 进行交換する
$replaced_text = preg_replace_callback_array(
    [
        $bold_pattern  => 'replace_bold',
        $italic_pattern => 'replace_italic'
    ],
    $markdown_text
);

echo $replaced_text;

包括的な例

これら2つの置換ロジックを組み合わせて、リンク、太字、斜体を含むマークダウンテキストを処理できます。

 訪問してください <a href="https://m66.net">Google</a>,それはです <strong>強力</strong> 検索エンジン。あなたもそれを試すことができます <em>Bing</em> 検索エンジン。