PHP에서 이메일 주소를 확인하는 방법은 여러 가지가 있습니다. 가장 일반적으로 사용되는 방법은 정규 표현식이지만, PHP에는 이메일 주소를 확인할 수 있는 방법이 내장되어 있습니다. . 살펴보겠습니다. See
My PHP에는 확인 방법이 제공됩니다.
filter_var
filter_var은 PHP에 내장된 변수 필터링 방법입니다. 정수, 부동 소수점 숫자, 이메일, URL, MAC 주소 등을 확인하는 데 사용할 수 있는 다양한 실용적인 filters를 제공합니다.
filter_var가 false를 반환하면
$email = "lastchiliarch@163.com"; var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)); $email = "asb"; var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)); $email = "1@a.com"; var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
출력:
string(21) "lastchiliarch@163.com" bool(false) string(7) 1@a.com
asb와 같은 불법 이메일 형식의 경우 false를 반환하지만, 1@a.com의 경우 통과하며 여전히 약간의 결함이 있습니다.
그러나 일반적인 규칙을 통과하면 1@a.com이 합법적인 이메일 주소로 간주됩니다. 그렇다면 이를 더 정확하게 확인할 수 있는 방법이 있을까요?
checkdnsrr
checkdnsrr은 실제로 지정된 호스트의 DNS 레코드를 쿼리하는 데 사용되며 사서함이 존재하는지 확인할 수 있습니다.
1@a.com의 경우 MX 레코드가 확실히 존재하지 않습니다.
$email = "lastchiliarch@163.com"; var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX")); $email = "1@a.com"; var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));
출력:
bool(true) bool(false)
완벽하다는 것을 알 수 있습니다. 유일한 단점은 결국 네트워크 요청이라는 것입니다. 따라서 이 방법을 사용하여 동시에 많은 수의 사서함을 확인하는 것은 적합하지 않습니다.
filter_var+checkdnsrr
확인을 위해 filter_var와 checkdnsrr을 결합할 수 있습니다. 대부분의 불법 메일함은 filter_var를 사용하면 확실히 실패하며 나머지는
checkdnsrr을 사용하여 추가로 판단할 수 있습니다.
$email_arr = array("lastchiliarch@163.com", "1@a.com"); foreach($email_arr as $email) { if (filter_var($email) === false) { echo "invalid email: $email \n"; continue; } if(checkdnsrr(array_pop(explode("@",$email)),"MX") === false) { echo "invalid email: $email \n"; continue; } }
출력:
invalid email: 1@a.com
하지만 주의할 점은 MX 레코드만 확인하는 것이므로 163.com이 존재한다고 판단할 수 있을 뿐이지 사용자 lastchiliarch가 존재한다는 의미는 아닙니다.
메일함의 존재를 보다 정확하게 확인하려면 SMTP 서버에 연결해서만 확인할 수 있습니다.
이메일, URL, IP가 합법적인지 확인하는 PHP 고유의 방법인 이메일 확인을 소개합니다.
주로 filter_var 함수를 사용합니다.
Syntax
filter_var(변수, 필터, 옵션)
변수가 필요합니다. 필터링할 변수를 지정합니다.
필터는 선택사항입니다. 사용할 필터의 ID를 지정합니다.
options는 플래그/옵션을 포함하는 배열을 지정합니다. 각 필터에 대해 가능한 플래그와 옵션을 확인하세요.
PHP 필터
예제 #1 filter_var() 예
<?php var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)); var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)); ?>
위 루틴은 다음을 출력합니다:
string(15) "bob@example.com" bool(false)
위 내용은 PHP에는 이메일 주소가 존재하는지 확인하는 자체 방법이 있다는 것을 알고 계셨습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!