在PHP 中處理字符串替換操作時,尤其是涉及到多字節字符編碼(如UTF-8)的時候, mb_eregi_replace函數是一個非常有用的工具。它不僅支持正則表達式匹配,還具備忽略大小寫的特性,並且兼容多字節編碼。
本文將介紹如何使用mb_eregi_replace函數來替換email 地址中的域名部分。比如,假設我們有一組email 地址,我們想將這些地址中的域名全部替換成m66.net 。
mb_eregi_replace的語法如下:
mb_eregi_replace($pattern, $replacement, $string, $option = 'msr');
$pattern是要匹配的正則表達式(不區分大小寫)。
$replacement是替換的內容。
$string是要處理的字符串。
$option是正則表達式的匹配選項,通常默認即可。
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 需要批量替換:
<?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
*/
?>