在處理Markdown 格式文本時,我們經常需要對其中的格式標籤進行替換,比如將Markdown 的加粗、斜體、鏈接等標籤替換為對應的HTML 標籤。 PHP 提供了多種字符串替換函數,其中mb_eregi_replace函數因其支持多字節字符且忽略大小寫,特別適合處理帶有中文或其他多字節字符的文本。
本文將介紹如何使用PHP 的mb_eregi_replace函數來替換Markdown 格式標籤,示例中以替換加粗( **加粗文本** )和斜體( *斜體文本* )為例,並說明如何替換Markdown 鏈接格式[文本](URL) 。
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 中的加粗格式通常用兩個星號包裹,如:
**加粗文字**
斜體則用一個星號:
*斜體文字*
我們希望替換成對應的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 鏈接格式一般為:
[鏈接文字](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 格式文本進行定制化轉換,快速實現前後端內容渲染的需求。