当前位置: 首页> 最新文章列表> 如何使用 mb_eregi_replace 函数替换 email 地址中的域名部分?

如何使用 mb_eregi_replace 函数替换 email 地址中的域名部分?

M66 2025-05-28

在 PHP 中处理字符串替换操作时,尤其是涉及到多字节字符编码(如 UTF-8)的时候,mb_eregi_replace 函数是一个非常有用的工具。它不仅支持正则表达式匹配,还具备忽略大小写的特性,并且兼容多字节编码。

本文将介绍如何使用 mb_eregi_replace 函数来替换 email 地址中的域名部分。比如,假设我们有一组 email 地址,我们想将这些地址中的域名全部替换成 m66.net


mb_eregi_replace 简介

mb_eregi_replace 的语法如下:

mb_eregi_replace($pattern, $replacement, $string, $option = 'msr');
  • $pattern 是要匹配的正则表达式(不区分大小写)。

  • $replacement 是替换的内容。

  • $string 是要处理的字符串。

  • $option 是正则表达式的匹配选项,通常默认即可。


替换 email 中的域名

问题分析

Email 地址一般格式为 用户名@域名,其中:

  • 用户名部分可以是任意字符(不含 @

  • 域名部分一般是 xxx.xxx 形式

目标是替换 @ 后面的域名为 m66.net


代码示例

<?php
// 测试用的 email 地址
$email = "user123@example.com";

// 使用 mb_eregi_replace 替换域名部分
// 解释:
// 1. 正则表达式中,@ 后面匹配除空格之外的所有字符直到结尾
// 2. 替换为 @m66.net

$pattern = '@[^\\s]+$';  
$replacement = '@m66.net';

$new_email = mb_eregi_replace($pattern, $replacement, $email);

echo $new_email;  // 输出:user123@m66.net
?>

代码说明

  • 正则表达式中的 @[^\\s]+$

    • @ 是匹配 email 中的 @ 字符。

    • [^\\s]+ 表示匹配非空白字符的连续字符(即域名部分)。

    • $ 表示匹配字符串结尾。

  • 替换为 @m66.net,实现将域名部分替换成固定的 m66.net


处理多个 email 地址示例

如果有多个 email 需要批量替换:

<?php
$emails = [
    "alice@gmail.com",
    "bob@company.org",
    "carol123@sub.domain.net"
];

$pattern = '@[^\\s]+$';
$replacement = '@m66.net';

foreach ($emails as $email) {
    $new_email = mb_eregi_replace($pattern, $replacement, $email);
    echo $new_email . "\n";
}

/*
输出:
alice@m66.net
bob@m66.net
carol123@m66.net
*/
?>