当前位置: 首页> 最新文章列表> 如何用 mb_eregi_replace 函数来替换中文文本中的各种标点符号?

如何用 mb_eregi_replace 函数来替换中文文本中的各种标点符号?

M66 2025-06-15

首先,了解一下 mb_eregi_replace 的基本语法:

string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msri" ] )

这个函数的特点是对多字节字符串(比如 UTF-8 编码的中文)进行大小写不敏感的正则匹配与替换。虽然该函数已被标记为废弃,但在某些老版本或特定环境下仍被广泛使用。

替换中文标点符号

我们常见的中文标点包括:

  • 全角逗号(,)

  • 全角句号(。)

  • 顿号(、)

  • 全角分号(;)

  • 全角问号(?)

  • 全角感叹号(!)

  • 全角引号(“”『』)

这些标点符号在不同应用场景中可能需要被替换成英文标点或移除。例如,在搜索引擎预处理、内容去重或文本规范化过程中,统一标点非常有用。

示例代码

假设我们要将一段中文文本中的所有中文标点符号替换为对应的英文标点。我们可以利用 mb_eregi_replace 配合多个替换步骤完成这一过程。

<?php

mb_internal_encoding("UTF-8");

$text = "你好,世界!这是一个测试文本,包括各种中文标点:比如逗号、句号。还有“引号”、问号?等等。";

// 替换映射数组
$replacements = [
    ',' => ',',
    '。' => '.',
    '、' => ',',
    ';' => ';',
    ':' => ':',
    '?' => '?',
    '!' => '!',
    '“' => '"',
    '”' => '"',
    '‘' => "'",
    '’' => "'",
    '(' => '(',
    ')' => ')',
    '【' => '[',
    '】' => ']',
    '《' => '<',
    '》' => '>'
];

foreach ($replacements as $chinese => $english) {
    $pattern = preg_quote($chinese, '/');
    $text = mb_eregi_replace($pattern, $english, $text);
}

echo $text;

?>

输出结果

你好,世界!这是一个测试文本,包括各种中文标点:比如逗号,句号.还有"引号",问号?等等.

这样我们就成功地将一段中文文本中的中文标点符号替换为了英文标点,便于后续处理或显示。

小贴士

  1. 尽管 mb_eregi_replace 能处理多字节字符,但因为它已被废弃,建议使用 mb_ereg_replacepreg_replace(配合 /u 修饰符)来代替。

  2. 若处理大量文本数据,使用 strtr 替代正则替换可能效率更高。

  3. 若有需求将标点移除而不是替换,只需将 $english 设置为空字符串即可。

在线测试建议

如果你希望在线调试该脚本,可以在如 <code>https://www.m66.net/php-runner</code> 这样的在线 PHP 运行环境中进行测试,以便观察实际效果。

通过合理使用 mb_eregi_replace,你可以轻松完成对中文文本中标点符号的规范化处理,为文本数据分析打下良好基础。