マークダウンフォーマットテキストを処理する場合、マークダウンボールド、イタリック、リンク、その他のタグを対応するHTMLタグに置き換えるなど、その中の形式のタグを置き換える必要があります。 PHPはさまざまな文字列置換機能を提供します。ここでは、 MB_EREGI_REPLACE関数は、マルチバイト文字をサポートし、ケースを無視するため、中国語または他のマルチバイト文字を使用したテキストに特に適しています。
この記事では、PHPのMB_EREGI_REPLACE関数を使用してMarkDownフォーマットタグを置き換える方法を紹介します。この例では、例として、太字( ** Bold Text ** )と斜体( *イタリックテキスト* )を置き換え、Markdownリンク形式[テキスト](URL)を置き換える方法を説明します。
MB_EREGI_REPLACEは、PHPマルチバイトストリング関数ライブラリの定期的な交換機能です。その機能はpreg_replaceに似ていますが、マルチバイトエンコード(UTF-8など)をサポートし、通常の試合の場合はケースが無視されます。
関数プロトタイプ:
string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] )
$パターン:一致する正規表現、ケース非感受性。
$の交換:交換された文字列。
$文字列:検索するターゲット文字列。
$オプション:一致する動作を制御するオプションパラメーター。
Markdownの大胆な形式は、通常、次のような2つのアスタリスクで包まれています。
**大胆なテキスト**
イタリックはアスタリスクを使用します:
*イタリックテキスト*
対応するHTMLタグ<strong>および<em>に置き換えたいと考えています。
<?php
// サンプルテキスト
$text = "これはです**大胆な**文章,その上*イタリック*例。";
// 交換する大胆な **text** のために <strong>text</strong>
$text = mb_eregi_replace('\*\*(.+?)\*\*', '<strong>$1</strong>', $text);
// 交換するイタリック *text* のために <em>text</em>
$text = mb_eregi_replace('\*(.+?)\*', '<em>$1</em>', $text);
echo $text;
?>
出力結果:
これはです<strong>大胆な</strong>文章,その上<em>イタリック</em>例。
正規表現\*\*(。+?)\*\*は、両側に囲まれたキャラクターに一致するためにここで使用されます。非グリーディモード+?あまりにも多くのキャラクターの過剰宣伝を防ぐために使用されます。
マークダウンリンク形式は一般的に次のとおりです。
[リンク文章](http://example.com)
次のようなHTML <a>タグに置き換えたいと思います。
<a href="http://example.com">リンク文章</a>
サンプルコード:
<?php
$text = "訪問してください[例网站](http://m66.net/path/to/page)もっと詳しく知る。";
// 交換する Markdown リンク
$text = mb_eregi_replace(
'\[(.+?)\]\((https?://)?(m66\.net)(/[^\s\)]+)?\)',
'<a href="http://m66.net$4">$1</a>',
$text
);
echo $text;
?>
ここに注意してください:
タイトルでは、交換コードでは、元のドメイン名に関係なく、URLドメイン名がM66.NETに直接固定されることが必要です。
リンクテキスト$ 1とパスパート$ 4は通常のものでキャプチャされ、新しいURLはhttp://m66.netから始まります。
<?php
$text = "いらっしゃいませ**大胆なテキスト**,その上*イタリックテキスト*。詳細をご覧ください[公式ウェブサイト](http://example.com/info)。";
// 交換する大胆な
$text = mb_eregi_replace('\*\*(.+?)\*\*', '<strong>$1</strong>', $text);
// 交換するイタリック
$text = mb_eregi_replace('\*(.+?)\*', '<em>$1</em>', $text);
// 交換するリンク,域名固定のために m66.net
$text = mb_eregi_replace(
'\[(.+?)\]\((https?://)?([^\s\)]+)\)',
'<a href="http://m66.net">$1</a>',
$text
);
echo $text;
?>
実行後、元のテキストの太字、イタリック、およびリンク形式は、対応するHTMLタグに置き換えられ、すべてのリンクが均一に変更され、 http://m66.netにポイントに変更されます。
MB_EREGI_REPLACEは、マルチバイト文字列を定期的に交換し、上級および小文字を無視することをサポートするための強力なツールです。
適切な正規表現を使用すると、Markdownフォーマットタグを正確に一致させることができます。
ターゲット文字列は、すべてのリンクドメイン名を固定M66.NETに置き換えるなど、交換中に柔軟に調整できます。
この方法は、多言語コンテンツに優しいものであり、特に中国のコンテンツ処理に適しています。
この例を使用して、PHPを簡単に使用してMarkdownフォーマットテキストをカスタマイズして、フロントエンドおよびバックエンドコンテンツのレンダリングのニーズをすばやく実現できます。