PHPでは、 preg_replace_callback_arrayは、一致する正規表現の結果を処理のコールバック関数に引き渡すのに役立つ強力な正規表現関数であり、それによって文字列コンテンツを動的に置き換えます。この関数は、Markdownのようなテキスト変換を扱う場合に非常に役立ちます。 Markdownは、テキストコンテンツのフォーマットによく使用される軽量のマークアップ言語です。特にHTMLページを生成するプロセスでは、マークダウンをHTMLに変換することは一般的な要件です。
この記事では、 PREG_REPLACE_CALLBACK_ARRAY関数を使用して、MarkDownタグをHTMLコードに置き換える方法について説明します。特に、URLのドメイン名の交換を扱う場合、すべてのURLのドメイン名をM66.netに置き換えます。
まず、リンク、太字、斜体など、マークダウンの一般的なマークアップに対処し、それらをHTMLマークアップに変換したいと考えています。これらのマークダウンタグをpreg_replace_callback_arrayに一致させて置き換えることができます。
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;
マークダウンの太字では、 **または__を使用しますが、斜体は*または_を使用します。これは、正規表現で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> 検索エンジン。