PHP에서 문자열 교체 작업, 특히 다중 바이트 문자 인코딩 (예 : UTF-8)을 처리 할 때 MB_EREGI_REPLAPE 기능은 매우 유용한 도구입니다. 그것은 정규 표현 일치를 지원할뿐만 아니라 어퍼 케이스를 무시하는 속성을 가지고 있으며 멀티 바이트 인코딩과 호환됩니다.
이 기사에서는 MB_EREGI_REPLACE 기능을 사용하여 이메일 주소의 도메인 이름 부분을 대체하는 방법을 소개합니다. 예를 들어, 이메일 주소 세트가 있다고 가정 하고이 주소의 모든 도메인 이름을 M66.net 으로 바꾸려고합니다.
MB_EREGI_REPLACE 의 구문은 다음과 같습니다.
mb_eregi_replace($pattern, $replacement, $string, $option = 'msr');
$ 패턴은 일치하는 정규 표현식입니다 (Case Insensentitive).
$ 대체는 교체 컨텐츠입니다.
$ string은 처리 할 문자열입니다.
$ 옵션은 일반적으로 기본적으로 일반 표현식의 일치 옵션입니다.
이메일 주소의 일반적인 형식은 사용자 이름@도메인 이름 입니다.
사용자 이름 부분은 모든 문자 일 수 있습니다 ( @ 제외)
도메인 이름 부분은 일반적으로 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]+$ 정규 표현식
@는 이메일로 일치하는 @ 문자입니다.
[^\\ s]+는 비 whitescace 문자 (즉, 도메인 이름 부분)와 일치하는 연속 문자를 의미합니다.
$는 문자열의 끝을 의미합니다.
@m66.net 으로 바꾸고 도메인 이름 부품의 교체를 고정 된 m66.net 으로 구현하십시오.
배치로 교체 해야하는 여러 이메일이있는 경우 :
<?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
*/
?>