在处理 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 格式文本进行定制化转换,快速实现前后端内容渲染的需求。