當前位置: 首頁> 最新文章列表> 如何用mb_eregi_replace 函數替換Markdown 中的格式標籤?

如何用mb_eregi_replace 函數替換Markdown 中的格式標籤?

M66 2025-06-15

在處理Markdown 格式文本時,我們經常需要對其中的格式標籤進行替換,比如將Markdown 的加粗、斜體、鏈接等標籤替換為對應的HTML 標籤。 PHP 提供了多種字符串替換函數,其中mb_eregi_replace函數因其支持多字節字符且忽略大小寫,特別適合處理帶有中文或其他多字節字符的文本。

本文將介紹如何使用PHP 的mb_eregi_replace函數來替換Markdown 格式標籤,示例中以替換加粗( **加粗文本** )和斜體( *斜體文本* )為例,並說明如何替換Markdown 鏈接格式[文本](URL)


什麼是mb_eregi_replace

mb_eregi_replace是PHP 多字節字符串函數庫中的一個正則替換函數,功能類似於preg_replace ,但支持多字節編碼(如UTF-8),且正則匹配時忽略大小寫。

函數原型:

 string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] )
  • $pattern :要匹配的正則表達式,不區分大小寫。

  • $replacement :替換的字符串。

  • $string :待搜索替換的目標字符串。

  • $option :可選參數,控制匹配行為。


替換Markdown 加粗和斜體示例

Markdown 中的加粗格式通常用兩個星號包裹,如:

 **加粗文字**

斜體則用一個星號:

 *斜體文字*

我們希望替換成對應的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>示例。

這裡用到了正則表達式\*\*(.+?)\*\* ,表示匹配兩邊包圍的任意字符,使用非貪婪模式+? ,防止跨越過多字符。


替換Markdown 鏈接格式

Markdown 鏈接格式一般為:

 [鏈接文字](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開頭。


綜合示例:處理多種Markdown 格式

<?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 格式文本進行定制化轉換,快速實現前後端內容渲染的需求。